MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Warum gibt hasOwnProperty des Mongoose-Modells false zurück, wenn die Eigenschaft vorhanden ist?

Dies liegt daran, dass das Dokumentobjekt, das Sie von Mongoose zurückerhalten, nicht direkt auf die Eigenschaften zugreift. Es verwendet die Prototypkette, daher hasOwnProperty gibt false zurück (ich vereinfache das stark).

Sie können eines von zwei Dingen tun:Verwenden Sie toObject() um es in ein einfaches Objekt umzuwandeln, und dann funktionieren Ihre Überprüfungen so wie sie sind:

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

ODER Sie können einfach direkt nach Werten suchen:

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

Da keine der Eigenschaften einen falschen Wert haben kann, sollte es zum Testen funktionieren, wenn sie gefüllt sind.

BEARBEITEN:Eine weitere Überprüfung, die ich vergessen habe zu erwähnen, ist die Verwendung von Mongooses eingebautem get Methode:

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