如果我有两个模式,比如:

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

Mongodb相关问答推荐

MongoDB.ArrayFilters出错:在路径中找不到标识符';elem';的数组筛选器

字段$set聚合导致错误美元($)前缀字段$concatArrays对于存储无效"

在MongoDB中获取所有帖子时如何获取相关用户信息

我无法在react 中使用 fetch 和express 从数据库中删除数据

在延迟函数中重用 context.WithTimeout

使用golang中的过滤器从mongodb复合集合中获取所有数据

Mongodb聚合中基于其他字段值的多个条件的动态新字段值

如何在 2 个应用程序之间共享mongoose模型?

将MongoDB连接到前端?

mongod 和 mongo 命令在 Windows 10 上不起作用

MongoDB 1.6.5:如何重命名集合中的字段

Node + Mongoose:获取最后插入的 ID?

如何在mongodb中删除数组的第n个元素

单个模式数组中的多个模式引用 - mongoose

我们如何使用spring boot为mongodb创建自动生成的字段

无法将 Mongoose 连接到 Atlas

更新时提示Field name duplication not allowed with modifiers

在 NodeJs 中处理 Mongodb 全局连接的最佳方法是什么

MissingSchemaError:Schema hasn't been registered for model

有没有办法防止 MongoDB 向集合名称添加复数形式?