Mongoose – 从ref查询中检索对象

我有以下模式:

var userSchema = new Schema({ firstName: String, lastName: String, emailAddress: {type: String, set: toLower, index: {unique: true}}, }); var eventMemberSchema = new Schema ({ user: { type : Schema.ObjectId, ref : 'User' }, created: { type: Date, default: Date.now } }); var eventSchema = new Schema({ id : String, name : String, startDate : Date, endDate : Date, venue : { type : Schema.ObjectId, ref : 'Venue' }, invitees : [eventMemberSchema], }); 

我正在试图做的是查询事件,与一个invitation._id,并最终找回用户…

invitees-> eventMember->用户

到目前为止,我得到了:

 Event .find({ "invitees._id": req.query.invitation_id }) .populate('user') .run(function (err, myEvent) { console.log('error: ' + err); console.log('event: '+ myEvent); }) 

这工作,和控制台显示myEvent的输出…(我意识到我不需要上面的mongoose查询的填充部分为此…我只是testing)

我正在努力如何得到,我基本上描述为:myEvent.invitees.user

编辑

作为一个更新…这工作 – 但是,它有点烂,因为现在我需要做另一个数据库操作,以获得用户(我意识到在mongoose参考引擎盖下)

 Event .findOne({ "invitees._id": "4f8eea01e2030fd11700006b"}, ['invitees.user'], function(err, evnt){ console.log('err: '+ err); console.log('user id: '+ evnt.invitees[0].user); //this shows the correct user id }); 

尝试

 Event .find({ "invitees._id": req.query.invitation_id }) .populate('invitees.user') 

更新

这是一个工作的要点 。