node.js - 在 Mongoose 中查找期间添加自定义字段

标签 node.js mongodb mongoose aggregation-framework

所以我有下一个模型:

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/

相关文章:

mongodb - 蒙戈.h : No such file or directory

arrays - Mongoose 传递嵌套排序对象来查询

javascript - 无法修改查询结果

javascript - 有没有办法在没有 mongodb 的情况下创建像 _id 字符串一样的 mongodb?

node.js - Mongoose 阵列种群

node.js - 获取设备的移动速度

mongodb - 将 Azure 认知搜索连接到 MongoDB Cloud Atlas

node.js - Mongoose:有没有办法将 lean 默认设置为 true(始终打开)?

javascript - Nodejs Fstream 在管道传输多个文件时触发多个 'end' 回调

c++ - 在 GYP 中检测 MSVC 版本