2011-10-12 3 views
5

कहें कि मेरे पास दो मोंगोज़ स्कीमा हैं:आप मोंगोस में मौजूदा स्कीमा में नेस्टेड ऑब्जेक्ट को कैसे परिभाषित करते हैं?

var AccountSchema = new Schema({ 
     userName: String 
    , password: String 
}) 
var AgentSchema = new Schema({ 
    Name : String 
    , Account: AccountSchema 
}) 

क्या वैसे भी एजेंटशेमा को संग्रह के बिना खाताशेकमा जोड़ने के लिए है?

+0

'Account' क्षेत्र शायद एक ObjectID की ओर इशारा करते होना चाहिए वास्तविक 'खाता' ऑब्जेक्ट डेटा। –

उत्तर

4

ऐसा लगता है कि यह संभव नहीं है। दो समाधान या तो एक DocumentId या virtuals उपयोग करने के लिए कर रहे हैं:

ObjectId:

var mongoose = require('mongoose') 
    , Schema = mongoose.Schema 
    , ObjectId = Schema.ObjectId; 

var AccountSchema = new Schema({ 
     userName: String 
    , password: String 
}) 
var AgentSchema = new Schema({ 
    name : String 
    , account: {type: ObjectId} 
}) 

Virtuals:

var AccountSchema = new Schema({ 
     userName: String 
    , password: String 
}) 
var AgentSchema = new Schema({ 
    name : String 
    , _accounts: [AccountSchema] 
}) 

AgentSchema.virtual('account') 
    .set(function(account) { this._accounts[0] = account; }) 
    .get(function() { return this._accounts.first(); }); 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^