[英]Mongoose find() returns undefined property and strange object
我有一个无法解决的错误,因为这是我第一次遇到。
这是我的查询:
Pack.find(
{idclient: clientId }
)
.populate({
path: 'cards',
options: { sort: { 'position': 1 } }
})
. exec(function(err,pack){
if(err){
console.log(err);
}else{
///
// here are my logs
callback(pack);
}
});
当我尝试console.log(pack)时,我会看到一个奇怪的\\ n返回
{ __v: 1,\n _id: 5596a859240cbd3832123b27,\n grouped: 0,\n idclient: \'4Z8OrisV2AMLZn_lAAAA\',\n matId: 5596a859240cbd3832123b26,\n reversed: 0,\n roomId: 5596a859e37d7e7099cec1e6,\n shuffled: 0,\n type: \'hand\',\n cards: [ 5596a859240cbd3832123b28, 5596a85c240cbd3832123b5d ],\n date: Fri Jul 03 2015 17:20:57 GMT+0200 (CEST),\n iscut: 0 }
通常,我可以看到格式良好的Json对象。
所以,当我尝试:
console.log(pack.property)=>未定义...
有人遇到过这个问题吗?
谢谢
这一部分分为两部分...
首先,来自Mongoose查找的回调返回一个数组... findOne将返回一个对象。
就新行而言,猫鼬文档具有console.log的toString()帮助器。 可能会添加换行符以提高可读性。 在调用console.log之前,将输出包装在JSON.stringify(即console.log(JSON.stringify(pack)) )中,您将看到文档为不含换行符的字符串。 -http://mongoosejs.com/docs/api.html#document_Document-toString
find()返回一个数组,因此感谢Adam Wysocki,使用findOne()。
有时我是愚蠢的开发者。
当Told Model.find()生成一个数组时,这就是我处理这种情况的方式:
Kitten.find(function (err, kittens) {
if (err) return console.error(err);
kittens.forEach(function(kitten){
console.log(kitten.name);
});
});
在我看来,这是访问属性的最清晰方法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.