在Mongoose中引用另一个模式

如果我有两个模式,如:

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}], }); 

我试图把它们连接在一起,就像上面的例子,但我不知道如何做到这一点。 最终,如果我可以做这样的事情,那会让我的生活变得很容易

 var profilePic = Post.postedBy.profilePic 

这听起来像填充方法是你在找什么。 首先对你的文章模式做一些小改动:

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

然后制作你的模型:

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

然后,当您进行查询时,您可以像这样填充引用:

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

附录:没有人提到“填充” – 这是非常值得您的时间和金钱看着Mongoose填充方法:还解释了跨文档参考

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