Pergunta

Trabalhando com angularjs e firebase escrevendo uma função que deve verificar se o currentUser pode ser encontrado no banco de dados.No momento a propriedade "atendimentos" contém apenas um usuário e esse é "Peter Pan"

serviços/festa.js

isAttending: function (party) {
      if (User.signedIn() && party.attendings) {
          console.log(User.getCurrent().username);   //Writes out: Peter Pan
          console.log(eve.attendings);               //Writes out: Peter Pan
          console.log(party.attendings.hasOwnProperty(
                 User.getCurrent().username);        //Writes out: false
      return party.attendings.hasOwnProperty(User.getCurrent().username);
    }
}

Peter Pan foi armazenado quando o objeto party foi criado:

var Party = {
  ..
  create: function (p) {
      ...
      party.attendings = user.username;
      ...
    }
}

O usuário aparentemente está armazenado em 'atendimentos', mas por que hasOwnProperty() não o encontra?

Foi útil?

Solução

Acho que você está enganado sobre como funciona o hasOwnProperty.

hasOwnProperty retornará se o objeto tiver uma propriedade, no seu caso, party tem uma propriedade atende por exemplo, mas isso é tudo que ele irá verificar, não irá verificar qual é o valor desta propriedade (neste caso Peter Pan).

Agora, presumo que você gostaria que o atendimento fosse uma lista, nesse caso você precisa encontrar um valor em uma lista, existem várias maneiras, se você puder usar jQuery você poderia fazer algo como:

$.inArray( User.getCurrent().username, [ party.attendings ] );

Caso contrário, dê uma olhada em diferentes alternativas apenas pesquisando no Google para encontrar um valor em uma matriz em javascript.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top