2012-01-28 5 views
5

Se ho due modelli, con una relazione has_many in ODM Mongoose. vale a dire. Utente appartiene al Team, e Team ha molti utenti:La mangma ODM ti consente di salvare facilmente entrambe le parti di un'associazione?

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); 

e

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); 

... c'è un modo per dire Mongoose per aggiungere il user alla collezione team.users su user.save({team: team, ...})? o devo semplicemente usare il middleware save() nel modello Utente?

La ragione per cui chiedo è che questo non è uno dei casi d'uso coperti dai documenti Mongoose e questa funzionalità è abbastanza standard nella convenzione rotaie/mongolo.

risposta

0

Per rispondere alla tua domanda: dovresti scrivere da solo quella funzionalità.

Tuttavia, hai passato il schema design doc? Specificamente linking embedding? Spesso è molto più semplice ed efficiente realizzare la relazione "has_many" attraverso l'incorporamento dei documenti.

+0

sì. ho trovato che embedded ha senso quando le entità non esistono senza il genitore. Ho anche trovato molto più difficile fare query di dati incorporati in modo esplicito. – justinjmoses