【问题标题】:Mongoose pre middleware with findByIdAndDelete带有 findByIdAndDelete 的 Mongoose 前置中间件
【发布时间】:2020-03-31 02:13:27
【问题描述】:

我正在学习关于 Udemy for Node js 的课程。 mongoose pre 中间件与这样的 remove 一起使用。

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

但我的实现不同,我想使用 findByIdAndDelete。这是我的代码。

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

但是这个不会触发。我试图在其中进行 console.log ,但它没有触发。我在这里做错了什么?

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    我相信中间件不存在。看看documentation

    但是,如果你转到findByIdAndDeletedocumentation 那么你会看到它触发了以下中间件:

    • findOneAndDelete

    所以,不要尝试ReviewSchema.pre('findByIdAndDelete', ...),而是尝试ReviewSchema.pre('findOneAndDelete', ...)

    【讨论】:

      【解决方案2】:

      findByIdAndDelete 似乎没有中间件。

      但是由于findByIdAndDelete触发findOneAndDelete,你可以利用这一点。

      所以你的 ReviewSchema 必须像这样更新:

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

      包含 next() 也是一个好主意,这样它就不会阻止中间件函数中的其余代码执行。

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

      【讨论】:

        猜你喜欢
        • 2020-08-08
        • 1970-01-01
        • 2019-07-20
        • 2019-06-02
        • 2021-06-03
        • 2018-07-14
        • 2014-11-28
        • 2021-01-09
        • 1970-01-01
        相关资源
        最近更新 更多