sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Por qué hasOwnProperty del modelo mongoose devuelve falso cuando la propiedad existe?

Es porque el objeto del documento que recibe de Mongoose no accede a las propiedades directamente. Utiliza la cadena prototipo, por lo tanto, hasOwnProperty devolviendo falso (lo estoy simplificando mucho).

Puede hacer una de dos cosas:usar toObject() para convertirlo en un objeto simple y luego sus cheques funcionarán como están:

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

O simplemente puede verificar los valores directamente:

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

Dado que ninguna de las propiedades puede tener un valor falso, debería funcionar para probar si están pobladas.

EDITAR:Otro control que olvidé mencionar es usar el get incorporado de Mongoose método:

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