2011-10-12 19 views
5

Decir que tengo dos esquemas: mangosta¿Cómo se define un objeto anidado a un esquema existente en Mongoose?

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

todos modos hay que añadir a la AccountSchema AgentSchema sin que sea una colección?

+0

El 'accounts campo probablemente debería ser un ID de objeto que apunta a la datos reales del objeto 'Cuenta'. –

Respuesta

4

Parece que no es posible. Las dos soluciones son o bien utilizar un DocumentId o 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} 
}) 

Virtuales:

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(); }); 
Cuestiones relacionadas