我需要知道修改过的字段,或者特定字段是否在 Mongoose 模式的更新 前 或 更新 后 钩子中被修改。我尝试了以下方法,但仍然无法弄清楚:
schema.post('update', function (doc) {
//check modified fields or if the name field was modified and then update doc
});
我知道也许有一个方法 isModified 就像在 预 保存 中一样,但我不知道如何用 更新 挂钩做同样的事情。任何建议将不胜感激。
原文由 jemlifathi 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您想知道正在修改哪些字段,则需要通过调用
save
发出 更新 命令:这种方式将调用 预保存 挂钩,您将可以访问:
因为
this
在 预保存 挂钩中引用了文档:另一方面,通过调用
update
发出 更新 命令时,您将无法获得相同的结果:因为在调用
update
时, _文档挂钩_(例如 pre-save 、 post-save )根本没有被执行。相反,在这种情况下会执行 _查询挂钩_(例如 pre-update 、 post-update )。 查询挂钩 的问题是this
它们内部没有引用文档,所以this.modifiedPaths === undefined