MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Perché hasOwnProperty del modello mangusta restituisce false quando la proprietà esiste?

È perché l'oggetto documento che ottieni da mangusta non accede direttamente alle proprietà. Usa la catena di prototipi quindi hasOwnProperty restituendo false (lo sto semplificando notevolmente).

Puoi fare una delle due cose:usa toObject() per convertirlo in un oggetto semplice e quindi i tuoi controlli funzioneranno come sono:

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

OPPURE puoi semplicemente controllare i valori direttamente:

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

Poiché nessuna delle proprietà può avere un valore falso, dovrebbe funzionare per il test se sono popolate.

EDIT:Un altro controllo che ho dimenticato di menzionare è quello di utilizzare get incorporata in Mongoose metodo:

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