代码之家  ›  专栏  ›  技术社区  ›  Muirik

使用mongoose`pre`钩子在findoneandupdate()之前获取文档

  •  1
  • Muirik  · 技术社区  · 6 年前

    我想用猫鼬 pre post 挂接我的MongoDB后端,以便比较文档在保存前和保存后的状态,以便根据所做的更改触发其他一些事件。但是到目前为止,我在通过蒙古斯获取文档时遇到了困难 之前 钩子。

    根据docs“预挂接对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 不是这里的文档本身,就像文档本身显示的那样?有什么方法可以让我用 之前 胡克?如果没有,是否还有其他方法可以实现这一点?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Haris Bouchlis Rohit Baila    6 年前