2012-01-28 9 views
5

Si tengo dos modelos, con una relación has_many en Mongoose ODM. es decir. Usuario pertenece al Equipo, y el equipo tiene muchos usuarios:¿El ODM de mangosta le permite guardar ambos lados de una asociación fácilmente?

var User = new Schema({ 
    username : {type: String, required: true }, 
    email  : {type: String, required: true}, 
    team  : { type: Schema.ObjectId, ref: 'Team'}, 
    created_at : {type : Date, default : Date.now}, 
    updated_at : {type : Date, default : Date.now} 
}); 

var exports = module.exports = mongoose.model('User', User); 

y

var Team = new Schema({ 
    name  : {type: String, required: true}, 
    users  : [{ type: Schema.ObjectId, ref: 'User'}], 
    created_at : {type : Date, default : Date.now}, 
    updated_at : {type : Date, default : Date.now} 
}); 

var exports = module.exports = mongoose.model('Team', Team); 

... ¿hay alguna manera de saber Mangosta para agregar la user a la colección de team.usersuser.save({team: team, ...})? ¿o solo tengo que usar el middleware save() en el modelo de Usuario?

La razón por la que pregunto es que este no es uno de los casos de uso cubiertos por los documentos de Mongoose y esta funcionalidad es bastante estándar en la convención de monovolúmenes/mongoid.

Respuesta

0

Para responder a su pregunta: usted mismo debe escribir esa funcionalidad.

Sin embargo, ¿ha pasado por el schema design doc? ¿Vinculación específica vs incrustación? A menudo es mucho más fácil y más eficiente lograr la relación "has_many" a través de la incrustación de documentos.

+0

Sí, tengo. He encontrado que incrustado tiene sentido cuando las entidades no existen sin el padre. También me ha resultado mucho más difícil hacer consultas de datos incrustados de forma explícita. – justinjmoses

Cuestiones relacionadas