我正在使用Mongoose& amp;编写一个论坛模块。的NodeJS。
我有一个ForumPost对象的集合,它们有一个属性“comments”,它是一个包含引用属性“author”的mongoose模式,它引用了User模型。我在填写“comments”数组中每个项目的“author”属性时遇到问题。
这是ForumPost对象定义:
var ForumPost = db.model("ForumPost", {
author: { type: Schema.Types.ObjectId, ref: "User", required: true, default: null, select: true},
comments: [new db.Schema({
author: { type: Schema.Types.ObjectId, ref: "User" },
comment: { type: String, default: ""},
})]
});
当我从数据库中提取这些内容时,我正在填充论坛帖子的“作者”字段,该字段工作正常,因为它是一个基本的填充操作。
我今天早上一直试图填充评论数组的“作者”字段无济于事,我的最新尝试发布在下面。
我使用以下查询:
ForumPost.findOne({alliance_id: alliance._id, _id: post_id})
.populate("author")
.populate({
path: 'comments',
populate: {
path: 'comments.author',
model: 'User'
}
})
.select("comments")
.exec(function(error, post) {
return res.json(post);
});
这可以在这个单一查询中填充ForumPost的comments数组中对象的“author”字段吗?
答案 0 :(得分:0)
由于您没有进行任何嵌套填充,因此您可以在单个populate
调用中包含这两个路径:
ForumPost.findOne({alliance_id: alliance._id, _id: post_id})
.populate('author comments.author')
.select('author comments')
.exec(function(error, post) {
return res.json(post);
});