MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Dlaczego hasOwnProperty modelu mangusty zwraca wartość false, gdy właściwość istnieje?

Dzieje się tak, ponieważ obiekt dokumentu, który otrzymujesz z mangusty, nie ma bezpośredniego dostępu do właściwości. Używa łańcucha prototypów, stąd hasOwnProperty zwracając false (bardzo to upraszczam).

Możesz zrobić jedną z dwóch rzeczy:użyj toObject() przekonwertować go na zwykły obiekt, a wtedy twoje sprawdzenia będą działać tak, jak są:

var userPOJO = User.toObject();
if ( !(userPOJO.hasOwnProperty('local') && userPOJO.local.hasOwnProperty('password')) ) {...}

LUB możesz po prostu sprawdzić wartości bezpośrednio:

if ( !(User.local && User.local.password) ) {...}

Ponieważ żadna z właściwości nie może mieć fałszywej wartości, powinna działać podczas testowania, jeśli są wypełnione.

EDYCJA:Inną kontrolą, o której zapomniałem wspomnieć, jest użycie wbudowanego get Mongoose metoda:

if (!User.get('local.password')) {...}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Czy istnieje sposób na atomową aktualizację dwóch kolekcji w MongoDB?

  2. Jak zmienić nazwę pola dla wszystkich dokumentów w MongoDB?

  3. Jak znaleźć nieużywane indeksy w MongoDB?

  4. Mongoose:jakie są różnice między Model.create i Collection.insert

  5. Wyszukiwanie tekstowe MongoDB ORAZ wiele wyszukiwanych słów