sql >> Database >  >> NoSQL >> MongoDB

Waarom retourneert hasOwnProperty van het mangoestmodel false als de eigenschap bestaat?

Het is omdat het documentobject dat u terugkrijgt van mangoest niet rechtstreeks toegang heeft tot de eigenschappen. Het gebruikt de prototypeketen, vandaar hasOwnProperty false retourneren (ik vereenvoudig dit enorm).

U kunt twee dingen doen:gebruik toObject() om het naar een gewoon object te converteren en dan zullen uw controles werken zoals het is:

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

OF u kunt gewoon rechtstreeks naar waarden zoeken:

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

Aangezien geen van beide eigenschappen een valse waarde kan hebben, zou het moeten werken om te testen als ze zijn ingevuld.

EDIT:Een andere controle die ik vergat te vermelden, is het gebruik van Mongoose's ingebouwde get methode:

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


  1. Is er een manier om recent verwijderde documenten in MongoDB te herstellen?

  2. pymongo:MongoClient of verbinding

  3. MongoDB - Vraag naar het laatste element van een array?

  4. Hoe te aggregeren op jaar-maand-dag in een andere tijdzone