Node.js Mongoose前置中间件,带有findByIdAndDelete

Node.js Mongoose前置中间件,带有findByIdAndDelete,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正在学习一门关于Udemy for Node js的课程。mongoose pre中间件与remove一起使用,如下所示 ReviewSchema.pre('remove', function() { // code goes here }); 但是我的实现是不同的,我想使用findbyianddelete。这是我的密码 ReviewSchema.pre('findByIdAndDelete', function() { // code goes here }); 但是这个不会触发

我正在学习一门关于Udemy for Node js的课程。mongoose pre中间件与remove一起使用,如下所示

ReviewSchema.pre('remove', function() {
  // code goes here
});
但是我的实现是不同的,我想使用findbyianddelete。这是我的密码

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

但是这个不会触发。我试着在这里面运行console.log,但它没有触发。我做错了什么?

我相信中间件不存在。请看下面的图片

但是,如果您转到
findbyianddelete
,您将看到它触发以下中间件:

  • findOneAndDelete

因此,与其使用
ReviewSchema.pre('findbyianddelete',…)
试试
ReviewSchema.pre('findoneddelete',…)
我相信中间件是不存在的。请看下面的图片

但是,如果您转到
findbyianddelete
,您将看到它触发以下中间件:

  • findOneAndDelete

因此,与其使用
ReviewSchema.pre('findbyianddelete',…)
试试
ReviewSchema.pre('findoneddelete',…)

似乎没有用于
findbyianddelete
的中间件

但是由于
findbyianddelete
会触发
findOneAndDelete
,因此您可以利用这一点

因此,您的ReviewSchema必须更新如下:

ReviewSchema.pre("findOneAndDelete", function() {
  console.log("called!!!");
});
另外,最好包含next(),这样它就不会停止中间件函数中其余代码的执行

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

似乎没有用于
findbyianddelete
的中间件

但是由于
findbyianddelete
会触发
findOneAndDelete
,因此您可以利用这一点

因此,您的ReviewSchema必须更新如下:

ReviewSchema.pre("findOneAndDelete", function() {
  console.log("called!!!");
});
另外,最好包含next(),这样它就不会停止中间件函数中其余代码的执行

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