所以我有下一个模型:
const PostSchema = new Schema({
name: String,
likedBy: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }]
})
我还有一个名为 isLoggedInOrNot 的中间件,如果有授权,它会填充 req.user。
因此,在索引页面上,我想查找并返回最新的帖子,并且每个帖子都应该添加一个自定义字段didILiked。所以我想要的是这样的:
Post.find().select({ didILiked: { likedBy: req.user._id } }).sort('-createdAt').exec()
我知道以上内容甚至无效,而只是我想要实现的目标的演示。
因此,假设 didILiked 已创建(如虚拟字段,不存储在数据库中),如果 req.user 未定义,则它应该为 true/false 或 null。
有办法实现这一点吗?
最佳答案
这里必须使用聚合。类似的东西
Post.aggregate([
{ "$addFields": {
"didILiked": { "$in": [mongoose.Types.ObjectId(req.user._id), "$likedBy"] }
}}
])
关于node.js - 在 Mongoose 中查找期间添加自定义字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53024939/