我动态创建了一些字段(它们不在我的模型中)。我用COLLECTION.findById .....发现了我的收藏品。
如果我想获取路径,它不会显示动态创建的路径。
console.log(result);
{ lv: { name: 'List vlastníctva', exist: false },
projekt: { name: 'Projektová dokumentácia', exist: false },
uzemne_rozhodnutie: { name: 'Územné rozhodnutie', exist: true },
complete: false,
sctcst: { name: 'ščťčšť', exist: false },
ctyzy: { name: 'čťýžý', exist: false },
cssczz: { name: 'čšščžž', exist: false },
__v: 0,
_id: 59b916633d77c1cf2958f007 }
console.log(Object.keys(result.schema.paths));
[ 'lv.name',
'lv.exist',
'projekt.name',
'projekt.exist',
'uzemne_rozhodnutie.name',
'uzemne_rozhodnutie.exist',
'complete',
'_id',
'__v' ]
console.log(result.lv);
{ name: 'List vlastníctva', exist: true }
console.log(result.cssczz);
undefined
Object.keys中的不是动态创建的字段。
我无法解决它。在DB中,它看起来已正确保存。
由于
答案 0 :(得分:0)
试试这个:
result.get('cssczz', mongoose.Schema.Types.Object)
如果您正在尝试检索未在架构中定义的字段,则需要告诉它预期的类型是什么。
或者,这也可以起作用:
var resultAsObject = result.toObject();
console.log(resultAsObject.csszz);
每次尝试从mongoose对象中检索某个值时,它都会检查模式定义以确保值具有正确的类型。要检索不在模式中的属性,您需要告诉mongoose它的类型是什么,或者首先将mongoose对象转换为普通JS对象。
文档: http://mongoosejs.com/docs/api.html#document_Document-get http://mongoosejs.com/docs/api.html#document_Document-toObject