我正在制作一个blogapp。两个模型注释和userProfile,注释看起来像这样:
var commentSchema = new Schema({
userId: {type: Schema.Types.ObjectId, ref: 'userProfile'},
replyCommentId: [{type: Schema.Types.ObjectId, ref:'Comment'}],
commentDesc: String,
date: {type: String, default: Date.now()}
});
我已将回复保存为评论本身,并通过存储在数组中的replycomment id引用主要评论。
我尝试填充这些回复字段。
commentsModel.findOne({_id: commentId}).populate('replyCommentId')
.populate('replyCommentId.userProfile').exec(function (err, docs) {
cb(err, docs);
})
我可以使用模型填充replyCommentId
,但userProfile
内的replycommentId
未填充。
答案 0 :(得分:0)
你可以这样试试:
...
const populateQuery = [];
populateQuery.push({
path: 'replyCommentId'
}, {
path: 'replyCommentId',
populate: {
path: "userProfile",
model: "Comment",
},
});
fields.commentsModel.findById(commentId)
.populate(populateQuery)
.exec((error, docs) => {
cb(error, docs);
});
....
答案 1 :(得分:0)
你不需要使用两个填充问题填充其中的replyCommentId和userId。可以使用一个填充来完成。
你可以试试这个:
commentsModel
.findOne({_id: commentId}).
.populate({
path : 'replyCommentId',
populate : {
path :'userId'
}
}).exec(function (err, docs) {
cb(err, docs);
});
有关Mongoose Populate及其选项的更多信息,请参阅Mongoose Populate Documentation。寻找跨多个级别填充。