Node.js Can';t访问Mongoose响应的对象属性
我正在node.js上运行此代码Node.js Can';t访问Mongoose响应的对象属性,node.js,mongodb,asynchronous,mongoose,Node.js,Mongodb,Asynchronous,Mongoose,我正在node.js上运行此代码 var mongoose = require('mongoose'); mongoose.model('participant',new mongoose.Schema({},{ collection : 'forumParticipant' })); var Participant = mongoose.model('participant'); mongoose.connect('******'); Participant.find({entity_id:
var mongoose = require('mongoose');
mongoose.model('participant',new mongoose.Schema({},{ collection : 'forumParticipant' }));
var Participant = mongoose.model('participant');
mongoose.connect('******');
Participant.find({entity_id: 0}, function (err, docs) {
console.log(docs[0]);
console.log(docs[0].entity_id)
});
1) 第一个console.log返回完整文档
2) 第二个console.log返回未定义
我不明白为什么
我需要做一些像这样的事情
var participants = docs.map(function(d){return d.user_id})
我怎样才能做到这一点?我遗漏了什么?当涉及到访问模型属性时,Mongoose做了一些古怪的事情。当您遇到问题时,最好使用
.lean()
作为查询的一部分,或者在输出上调用.toObject()
,将模型转换为普通JS对象
e、 g.使用.toObject()
e、 g.使用lean()
我怀疑您试图获取的值不在
模式中,而是存储在数据库中
你有两个解决方案。您可以将entity\u id
添加到您的Schema
中,Mongo将能够将其绑定到您收到的文档
对象。这是推荐的方法
或者,您可以绕过mongooseSchema
,使用docs[0]访问存储在数据库中的原始文档。\u doc.entity\u id
。除非你知道自己在做什么,否则我不推荐这个解决方案
Partipant.find({entity_id: 0})
上面的find()返回数据库中的文档数组
您可以访问每个记录的值
docs.map((d)=>{
console.log(d.get('user_id'))
})
您是否尝试过使用toObject()
像var particients=docs.map(函数(doc){return doc.toObject().user_id;}那样展平结果
或返回普通JS对象的方法?问题是mongoose不会返回数据库中的对象,而是返回包装在mongoose对象中的对象。正确的解决方案是将属性添加到架构中,Masadow的旁路是一种功能替代方法。感谢您的回答,它帮助了我。但是对于\u id
,我如何访问它,它不在我的模式中,它返回Unfind?是的!这它不在模式中。因此,它显示在对象的完整打印上,但不是在使用键时!非常感谢。
Partipant.find({entity_id: 0})
docs.map((d)=>{
console.log(d.get('user_id'))
})