在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填充方法:还解释了跨文档参考