使用findByIdAndDelete的Mongoose预中间件

3

我正在Udemy上学习Node.js课程。在那里,使用mongoose预处理程序与remove一起使用,如下所示。

ReviewSchema.pre('remove', function() {
  // code goes here
});

但是我的实现方式不同,我希望使用findByIdAndDelete。以下是我的代码。

ReviewSchema.pre('findByIdAndDelete', function() {
  // code goes here
});

但是这个事件没有触发。我尝试在其中加入console.log,但它没有触发。我在这里做错了什么?

2个回答

5
我认为中间件不存在。请查看文档
但是,若您前往findByIdAndDelete文档,您会发现会触发以下中间件:
  • findOneAndDelete
因此,请尝试使用ReviewSchema.pre('findOneAndDelete', ...)而不是ReviewSchema.pre('findByIdAndDelete', ...)

3

目前似乎没有适用于findByIdAndDelete的中间件。

但由于findByIdAndDelete触发了findOneAndDelete,您可以利用它。

因此,您的ReviewSchema必须像这样进行更新:

ReviewSchema.pre("findOneAndDelete", function() {
  console.log("called!!!");
});

此外,最好包含next(),以使其不会阻止中间件函数中的其余代码执行。
ReviewSchema.pre("findOneAndDelete", function(next) {
  console.log("called!!!");
  next();
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接