Hug*_*ugo 5 asynchronous mongoose mongodb node.js
我在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)
});
Run Code Online (Sandbox Code Playgroud)
1)第一个console.log返回完整的文档
2)第二个console.log返回未完成
我不明白为什么.
我需要做类似的事情
var participants = docs.map(function(d){return d.user_id})
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?我错过了什么?
Yur*_*bin 12
在访问模型属性时,Mongoose做了一些时髦的东西.无论何时遇到问题,最好的选择是将其.lean()用作查询的一部分,或者调用.toObject()输出将模型转换为普通的JS对象.
例如使用 .toObject()
Participant.find({entity_id: 0}, function (err, docs) {
console.log(docs[0].toObject());
console.log(docs[0].toObject().entity_id)
});
Run Code Online (Sandbox Code Playgroud)
例如使用 lean()
Participant.find({entity_id: 0}).lean().exec(function (err, docs) {
console.log(docs[0]);
console.log(docs[0].entity_id)
});
Run Code Online (Sandbox Code Playgroud)
Mas*_*dow 10
我怀疑你想要获得的价值不在你的身上,Schema而是存储在你的数据库里.
你有两个解决方案.您可以添加entity_id到您的Schema,Mongo将能够将其绑定到Document您收到的对象.这是推荐的方式.
或者您可以绕过mongoose Schema并访问存储在数据库中的原始文档docs[0]._doc.entity_id.除非你知道你在做什么,否则我不推荐这个解决方案.
| 归档时间: |
|
| 查看次数: |
4468 次 |
| 最近记录: |