2013-01-31 23 views
15

बिना क्षेत्र को पॉप्युलेट मैं 3 स्कीमा है:नेवला रेफरी विकल्प

var User1Schema = new Schema({ 
    name: {type:String , trim: true, required: true }, 
    status: {type:Number, required: true, default:1} 
},{collection:"user_1"}); 

,

var User2Schema = new Schema({ 
    name: {type:String , trim: true, required: true }, 
    email: {type: String, required: true, index: {unique: true} }, 
    status: {type:Number, required: true, default:1} 
},{collection:"user_2"}); 

और

var ConversationSchema = new Schema({ 

    participants: [{user:{type: ObjectId, required: true}], 
    creator: {type: ObjectId, required: true}, 

    status: { type:Number, required: true, default:1 } 

}, { collection:"conversation" }); 

ConversationSchema में मैं निर्माता क्षेत्र जो अब रेफरी का विकल्प है, क्योंकि, यह User1chechema या User2Schema का प्रकार हो सकता है।

मैं नेवला

+2

'mongoose-dbref' प्लगइन देखें: https://github.com/goulash1971/mongoose-dbref – JohnnyHK

+0

यहां' mongoose-dbref' की एक और अद्यतित शाखा है https://github.com/apiaryio/नेवला-dbref। हालांकि, यदि संभव हो, तो आपको इसे ब्रांच करने की बजाय अपनी स्कीमा को बदलने की कोशिश करनी चाहिए: http://stackoverflow.com/questions/7617002/dealing-with-schema-changes-in-mongoose – mjhm

उत्तर

23
Conversation.find().populate('creator', null, 'User2').exec(callback) 

docs का उपयोग कर निर्माता क्षेत्र को पॉप्युलेट कर सकते हैं कैसे स्पष्ट नहीं हैं। जल्द ही अपडेट हो जाएगा।

इसके अलावा, इसके लिए वाक्यविन्यास v3.6 में आसान होगा।

+0

यह एकाधिक- संदर्भ क्षेत्र, मुझे कल्पना है? उदाहरण के लिए, किसी दस्तावेज़ का '_Author'' उपयोगकर्ता 'ऑब्जेक्ट आईडी हो सकता है _or_ यह' संगठन 'ऑब्जेक्ट आईडी हो सकता है? –

+2

हाँ, यदि आप जानते हैं कि कौन सा मॉडल आवश्यक है तो आप इसे क्वेरी समय पर निर्दिष्ट कर सकते हैं। – aaronheckmann

+0

क्या यह एक मिश्रित प्रकार फ़ील्ड के लिए भी काम करता है जहां पथ ऑब्जेक्टआईडी को संदर्भित करता है? –