node.js - 无法访问 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: 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})

我怎样才能做到这一点?我错过了什么?

最佳答案

我怀疑您尝试获取的值不在您的 Schema 中,而是存储在您的数据库中。

您有两个解决方案。您可以将 entity_id 添加到您的 Schema 中,Mongo 将能够将其绑定(bind)到您收到的 Document 对象。这是推荐的方式。

或者您可以绕过 Mongoose Schema 并使用 docs[0]._doc.entity_id 访问存储在数据库中的原始文档。除非您知道自己在做什么,否则我不推荐此解决方案。

关于node.js - 无法访问 Mongoose 响应的对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32633561/

相关文章:

javascript - Expressjs 静态文件不起作用

javascript - 尝试在 meteor 中将两个集合合并在一起

c# - 尝试同步调用异步方法时出现死锁

c++ - powerdns + mongodb

exception - async void、await 和异常 - 为什么 GUI 线程在 'await' 之后抛出的异常需要 AsyncVoidMethodBuilder 进行编码(marshal)?

c# - HttpContext.Current 在异步回调中为 null

c# - 如何在 C# 中实现 socketIO 以与 NodeJS 配合使用?

javascript - node.js session

node.js - Github 操作 - 未处理的拒绝 SequelizeConnectionError : no PostgreSQL user name specified in startup packet

node.js - mongoDB/NodeJS save() 方法不起作用