【问题标题】:Adding custom field during find in Mongoose在 Mongoose 中查找期间添加自定义字段
【发布时间】:2019-04-01 04:06:37
【问题描述】:

所以我有下一个模型:

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。

有没有办法做到这一点?

【问题讨论】:

    标签: node.js mongodb mongoose aggregation-framework


    【解决方案1】:

    你必须在这里使用聚合。类似的东西

    Post.aggregate([
      { "$addFields": {
        "didILiked": { "$in": [mongoose.Types.ObjectId(req.user._id), "$likedBy"] }
      }}
    ])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多