检查字段是否在 mongoose 的 post 函数 findOneAndUpdate 挂钩中被修改
Check if field is modified in mongoose's post hook for function findOneAndUpdate
在控制器中,我使用 findOneAndUpdate 增加了一个字段。增量不一定总是执行,这取决于是否满足更新查询的条件。
如果字段已经增加,另一个模型也应该更新。所以,我想使用:
schema.post('findOneAndUpdate', function(err) {
pseudo-code:
if (field is incremented)
anotherModel.update()
});
问题是我似乎无法确定该字段是否已被修改。
自引用 (this) 指向一个相当大的有趣对象(与 'save' 的中间件函数不同),所以我没有看到太多其他选项来确定字段是否被修改。
有什么想法吗?
传递给 findOneAndUpdate
的 post middleware 回调的参数是要更新的匹配文档,而不是节点回调模式中常见的错误。在回调中,this
是从 findOneAndUpdate
.
返回的查询对象
schema.post('findOneAndUpdate', function(doc) {...});
另请注意,如果您想要与查询匹配的更新文档而不是原始文档,则必须在查询中指定 new
选项:
findOneAndUpdate(QUERY, UPDATE, {new: true});
在控制器中,我使用 findOneAndUpdate 增加了一个字段。增量不一定总是执行,这取决于是否满足更新查询的条件。 如果字段已经增加,另一个模型也应该更新。所以,我想使用:
schema.post('findOneAndUpdate', function(err) {
pseudo-code:
if (field is incremented)
anotherModel.update()
});
问题是我似乎无法确定该字段是否已被修改。 自引用 (this) 指向一个相当大的有趣对象(与 'save' 的中间件函数不同),所以我没有看到太多其他选项来确定字段是否被修改。
有什么想法吗?
传递给 findOneAndUpdate
的 post middleware 回调的参数是要更新的匹配文档,而不是节点回调模式中常见的错误。在回调中,this
是从 findOneAndUpdate
.
schema.post('findOneAndUpdate', function(doc) {...});
另请注意,如果您想要与查询匹配的更新文档而不是原始文档,则必须在查询中指定 new
选项:
findOneAndUpdate(QUERY, UPDATE, {new: true});