每个帖子都有评论,用户可以喜欢'一条评论。我想要实现的是当用户查看帖子评论时,他们将能够看到他们喜欢并且当前不喜欢的评论(允许喜欢和不同于任何评论)
评论架构:
// ====================
// Comment Likes Schema
// ====================
var CommentLikes = new Schema({
userId:String,
commentId:String
})
// ==============
// Comment Schema
// ==============
var CommentSchema = new Schema({
postId:String,
authorId:String,
authorUsername:String,
authorComment:String,
likes:[CommentLikes],
created: {
type: Date,
default: Date.now
},
});
// Comment Model
var Comment = mongoose.model('Comment', CommentSchema, 'comment');
这似乎是使用嵌入式文档处理评论喜欢的最佳方式。
目前我正在选择所有帖子评论,如下:
Comment.find({ postId:req.params.postId }).sort({ _id: -1 }).limit(20)
.exec(function (err, comments) {
if(err) throw err
// === Assuming Comment Likes Logic Here
// Return
return res.send({
comments:comments,
})
})
目前,无论当前用户ID如何,我都会将所有相关内容返回。如果评论有50k喜欢,那么将所有喜欢的内容发回肯定会效率低下,因此我希望得到所有评论,但只有登录用户创建的喜欢(使用userId)。最有效的方法是什么?我的第一个想法是只运行另一个发现并让他们这样做?但我当然可以不在父级上运行find()然后限制嵌入式文档?