javascript - 在 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

最佳答案

听起来 populate 方法正是您想要的。首先对您的帖子架构进行一些小改动:

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

https://stackoverflow.com/questions/18001478/

相关文章:

windows - MongoDB 新手无法运行命令 mongo

javascript - 如何跨 NodeJs 应用程序和模块正确重用与 Mongodb 的连接

mongodb - 如何从 Mac OS 终端连接到远程 mongo 服务器

mongodb - E : Unable to locate package mongodb-org

ruby-on-rails - Mongodb:使用前需要了解什么?

mongodb - 如何使用 Robo 3T 从 MongoDB 导出 JSON

javascript - Mongoose,使用查找选择特定字段

mongodb - 什么是 Mongoose 错误 Cast to ObjectId failed

mongodb - Meteor 有哪些安全机制?

mongodb - 如何查看 mongodb 从 mongo shell 监听的端口?