如何为多种方法注册相同的猫鼬钩子?

问题描述

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

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

&

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

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

那么,有没有什么办法可以同时用相同的代码注册两个预挂钩?

解决方法

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

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

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