sql >> Databáze >  >> NoSQL >> MongoDB

Proč se hasOwnProperty modelu mongoose vrací false, když vlastnost existuje?

Je to proto, že objekt dokumentu, který získáte zpět od mongoose, nemá přímý přístup k vlastnostem. Používá prototypový řetězec, tedy hasOwnProperty vrací false (velmi to zjednodušuji).

Můžete udělat jednu ze dvou věcí:použít toObject() převést jej na prostý objekt a poté budou vaše kontroly fungovat tak, jak jsou:

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

NEBO můžete hodnoty přímo zkontrolovat:

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

Protože žádná z vlastností nemůže mít falešnou hodnotu, měla by fungovat pro testování, pokud jsou naplněny.

EDIT:Další kontrolou, kterou jsem zapomněl zmínit, je použití vestavěného get Mongoose metoda:

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


  1. Java Client pro připojení ElasticCache Redis Cache Node

  2. Mongodb agregované řazení a omezení v rámci skupiny

  3. MongoDB $isoWeek

  4. sql dotaz na mongodb?