Tôi đã có sơ đồ sau đây:Mongoose - Lấy đối tượng từ truy vấn 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],
});
Những gì tôi đang cố gắng để làm là truy vấn các sự kiện, với một invitation._id, và cuối cùng là lấy lại sử dụng ...
invitees-> eventMember-> user
Cho đến nay tôi đã có:
Event
.find({ "invitees._id": req.query.invitation_id })
.populate('user')
.run(function (err, myEvent) {
console.log('error: ' + err);
console.log('event: '+ myEvent);
})
wor này ks, và giao diện điều khiển cho thấy đầu ra của myEvent ... (Tôi nhận ra rằng tôi không cần phần cư trú của truy vấn mongoose của tôi ở trên cho điều này ... tôi chỉ đang thử nghiệm)
Tôi đang đấu tranh về cách thức để có được, những gì tôi về cơ bản muốn mô tả như sau: myEvent.invitees.user
EDIT
như một bản cập nhật ... này làm việc - tuy nhiên, nó loại sucks, như bây giờ i' sẽ cần phải thực hiện một hoạt động db khác để có được người dùng (tôi nhận ra ref trong mongoose thực hiện điều này dưới mui xe)
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
});
trong 3.x thay thế .run() bằng .exec() – chovy