2011-10-12 32 views
5

Nói rằng tôi có hai schemas cầy mangut:Làm thế nào để bạn xác định một đối tượng lồng nhau cho một lược đồ hiện có trong Mongoose?

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

là có anyway để thêm AccountSchema đến AgentSchema mà không có nó là một bộ sưu tập?

+0

Lệnh 'Account' lĩnh vực lẽ phải là một ObjectId trỏ đến các dữ liệu đối tượng 'Tài khoản' thực tế. –

Trả lời

4

Có vẻ như không thể. Hai giải pháp là phải sử dụng một documentId hoặc 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(); }); 
Các vấn đề liên quan