Fare riferimento a un altro schema in Mongoose

se ho due schemi come:

var userSchema = new Schema({ twittername: String, twitterID: Number, displayName: String, profilePic: String, }); var User = mongoose.model('User') var postSchema = new Schema({ name: String, postedBy: User, //User Model Type dateCreated: Date, comments: [{body:"string", by: mongoose.Schema.Types.ObjectId}], }); 

Ho provato a collegarli insieme come nell’esempio sopra ma non riuscivo a capire come farlo. Alla fine, se posso fare qualcosa del genere, mi renderebbe la vita molto facile

 var profilePic = Post.postedBy.profilePic 

Sembra che il metodo popolare sia quello che stai cercando. In primo luogo apporta piccole modifiche allo schema del tuo post:

 var postSchema = new Schema({ name: String, postedBy: {type: mongoose.Schema.Types.ObjectId, ref: 'User'}, dateCreated: Date, comments: [{body:"string", by: mongoose.Schema.Types.ObjectId}], }); 

Quindi crea il tuo modello:

 var Post = mongoose.model('Post', postSchema); 

Quindi, quando si effettua la query, è ansible popolare riferimenti come questo:

 Post.findOne({_id: 123}) .populate('postedBy') .exec(function(err, post) { // do stuff with post }); 

Addendum: nessuno ha menzionato “Populate” — vale molto il tuo tempo e denaro a guardare il metodo del popolo Mongooses: spiega anche il riferimento ai documenti incrociati

http://mongoosejs.com/docs/populate.html