Mongoose - 无法访问对象属性?
Posted
技术标签:
【中文标题】Mongoose - 无法访问对象属性?【英文标题】:Mongoose - can't access object properties? 【发布时间】:2016-07-22 17:38:14 【问题描述】:我正在尝试访问返回的 MongoDB (mongoose) 查找的属性。
如果我尝试通过控制台记录整个对象,我可以看到所有内容。但是如果我尝试记录一个属性,我会得到undefined
。对象在那里!
function getAll ()
let d = q.defer();
User.find(, function (err, docs)
if (err)
d.reject(err);
for(let user of docs)
console.log(user); // This works!
console.log(user.email); // This returns undefined!
d.resolve();
);
return d.promise;
有什么想法吗? 我还尝试使用 JSON.parse 以防它被字符串化(只是为了确保)但它不是。
更新
看来我可以使用user._doc.email
访问结果。
但这是什么原因造成的?我不记得以前必须这样做。
【问题讨论】:
您的控制台中究竟显示了什么? @RyanO'Hara '未定义'。记录整个用户对象会按照应打印的方式打印对象,包括所有属性和值。 您能否提供包含 1 个数据样本的最小插入脚本? 'for(文档中的用户)';不是“的” @activatedgeek 我可以,但我确信这无关紧要。因为接收响应的客户端(angularjs)能够访问属性。反正我会加的。 【参考方案1】:如果您在console.log
整个文档时显示了文档中的某个字段,但在您直接访问该字段时未显示,则表示模型的架构定义中缺少该字段。
所以将email
添加到User
的架构中。
【讨论】:
作为一个相对较新的人,我发现这个答案非常难以理解。那么,更明确地说,如何将字段添加到模型的模式中?具体来说,我正在使用 asn1.js 解析证书,并在树中遍历,当我尝试访问valueBlock
元素的 blockName
字段时遇到了这个问题。它会在我使用 JSON.stringify 输出整个树时显示,但在我访问 valueBlock 节点的 blockName 属性时不会显示
@CodeJockey 这是特定于 MongooseJS 库 (mongoosejs.com/docs/guide.html#definition) 中模式的问答。你在用猫鼬吗?以上是关于Mongoose - 无法访问对象属性?的主要内容,如果未能解决你的问题,请参考以下文章
无法通过 express/mongoose/angularjs 从 Mongodb 访问数据
无法向 Mongoose 查询返回的对象添加新属性 [重复]