【发布时间】:2019-07-01 22:45:43
【问题描述】:
我正在尝试在我的 MongoDB 后端中使用 Mongoose pre 和 post 钩子来比较文档在其保存前后的状态,以便根据更改触发一些其他事件。但是到目前为止,我无法通过 Mongoose pre 钩子获取文档。
根据文档“pre hooks 适用于 doc.save() 和 doc.update()。在这两种情况下,这都是指文档本身......”。所以我在这里尝试了。首先在我的模型/模式中,我有以下代码:
let Schema = mongoose
.Schema(CustomerSchema, {
timestamps: true
})
.pre("findOneAndUpdate", function(next) {
trigger.preSave(next);
})
// other hooks
}
...然后在我的触发器文件中,我有以下代码:
exports.preSave = function(next) {
console.log("this: ", this);
}
};
但这是记录到控制台的内容:
this: { preSave: [Function], postSave: [AsyncFunction] }
很明显这不起作用。这并没有像我希望的那样注销文档。为什么this 不是这里的文档本身,正如文档本身所表明的那样?有没有办法用pre 钩子获取文档?如果没有,还有其他方法可以实现吗?
【问题讨论】: