से वस्तु प्राप्त कर रहा है मैंने निम्नलिखित स्कीमा मिला:नेवला - रेफरी क्वेरी
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);
})
यह wor केएस, और कंसोल myEvent के आउटपुट को दिखाता है ... (मुझे एहसास है कि मुझे इसके लिए मेरे मैंगोज़ क्वेरी के पॉप्युलेट भाग की आवश्यकता नहीं है ... मैं बस परीक्षण कर रहा हूं)
मैं इस पर संघर्ष कर रहा हूं कि कैसे प्राप्त करने के लिए, क्या मैं मूल रूप से के रूप में वर्णित हैं: myEvent.invitees.user
संपादित
एक अद्यतन के रूप में ... यह काम करता है - हालांकि, यह एक तरह से बेकार है, के रूप में अब मैं ' उपयोगकर्ता को प्राप्त करने के लिए मुझे एक और डीबी ऑपरेशन करने की आवश्यकता होगी (मुझे लगता है कि मोंगोज़ में रेफरी हूड के तहत करता है)
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
});
3.x में .run() के साथ .exec() को प्रतिस्थापित करें – chovy