首页 > 解决方案 > 如何为多个方法注册相同的猫鼬钩子?

问题描述

我想在 pre-hook 中使用多种方法执行相同的脚本,如下所示:

UserSchema.pre("findOne", function(next) {
    console.log("Common code");
});

&

UserSchema.pre("findOneAndUpdate", function(next) {
    console.log("Common code");
});

因此,正如您在上面的 2 个脚本中注意到的那样,它们都在执行相同的代码,但具有不同的方法:findOne& findOneAndUpdate

那么,有没有办法一次用相同的代码注册两个预挂钩?

标签: javascriptnode.jsmongodbmongoosemongoose-middleware

解决方案


您可以将所有方法以数组的形式作为 pre/post 钩子方法中的第一个参数传递,如下所示:

UserSchema.pre(["findOne", "findOneAndUpdate"], function(next) {  // ["method1", "method2", "method3"...]
    console.log("Common code");
});

现在您可以为多个方法注册和执行相同的脚本。


推荐阅读