【问题标题】:Check if field is modified in mongoose's post hook for function findOneAndUpdate检查是否在 mongoose 的函数 findOneAndUpdate 的 post 挂钩中修改了字段
【发布时间】:2015-04-14 10:34:32
【问题描述】:

在控制器中,我使用 findOneAndUpdate 递增一个字段。增量不一定总是执行,这取决于是否满足更新查询的条件。 如果该字段已增加,则还应更新另一个模型。所以,我想用:

schema.post('findOneAndUpdate', function(err) {
    pseudo-code:
    if (field is incremented)
      anotherModel.update()
});

问题是我似乎无法确定该字段是否已被修改。 自引用 (this) 指向一个相当大的有趣对象,(与用于“保存”的中间件函数不同),所以我看不到太多其他选项来确定字段是否被修改。

有什么想法吗?

【问题讨论】:

    标签: express mongoose middleware


    【解决方案1】:

    传递给findOneAndUpdate 的post middleware 回调的参数是要更新的匹配文档,而不是节点回调模式中常见的错误。在回调中,this 是从findOneAndUpdate 返回的查询对象。

    schema.post('findOneAndUpdate', function(doc) {...});

    另外请注意,如果您想要更新的文档而不是原始文档来匹配查询,您必须在查询中指定new 选项:

    findOneAndUpdate(QUERY, UPDATE, {new: true});

    【讨论】:

      猜你喜欢
      • 2016-12-15
      • 2017-05-06
      • 2019-12-26
      • 2021-08-04
      • 2018-03-17
      • 2020-01-21
      • 1970-01-01
      • 2015-05-17
      • 1970-01-01
      相关资源
      最近更新 更多