我正在更新模型对象,并希望在执行此操作时调用一个方法。
我可能会
findOne
save
但是,有没有一种方法可以通过update
或findOneAndUpdate
实现呢?
我知道我可能还可以使用更新前事件挂钩,但是我没有找到跟踪哪些字段已更改的可能性,因为我不想在任何更新时触发该方法,但是如果有特定字段改变了。
答案 0 :(得分:0)
我认为您正在寻找猫鼬middlewares或钩子之类的东西。 您可以在以下挂钩中选择:
这是一个预钩示例:
schema.pre('save', function(next) {
const err = new Error('something went wrong');
// If you call `next()` with an argument, that argument is assumed to be
// an error.
next(err);
});
schema.pre('save', function() {
// You can also return a promise that rejects
return new Promise((resolve, reject) => {
reject(new Error('something went wrong'));
});
});
schema.pre('save', function() {
// You can also throw a synchronous error
throw new Error('something went wrong');
});
schema.pre('save', async function() {
await Promise.resolve();
// You can also throw an error in an `async` function
throw new Error('something went wrong');
});
// later...
// Changes will not be persisted to MongoDB because a pre hook errored out
myDoc.save(function(err) {
console.log(err.message); // something went wrong
});