使用猫鼬`pre`勾findOneAndUpdate之前得到的文档()

问题描述 投票:1回答:1

我试图用猫鼬prepost钩在我的MongoDB的后端,以在文档中的前和后的保存状态比较,以触发取决于什么改变了一些其他事件。到目前为止,但我有麻烦通过猫鼬pre钩文档。

据该文档“前的钩两个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);
  }
};

但是,这是记录到控制台:

这样:{preSave:[功能],postSave:[AsyncFunction]}

所以显然这没有奏效。因为我希望这并没有注销的文件。为什么this不是文件本身在这里,作为文档本身似乎说明什么? ,是有办法,我可以得到一个pre钩文档的联系呢?如果没有,有没有人来做到这一点的另一种方法?

mongodb mongoose
1个回答
3
投票

您不能检索在pre钩文档。

按照documentation pre是查询中间件和this指查询,而不是文件被更新。