Node.js 有没有办法定义特定于环境的mongoose中间件?
我希望只能在特定环境中运行某些钩子。例如,我有一个执行图像处理的Node.js 有没有办法定义特定于环境的mongoose中间件?,node.js,mongoose,Node.js,Mongoose,我希望只能在特定环境中运行某些钩子。例如,我有一个执行图像处理的post.save,但我不需要在测试期间运行这个钩子。一种解决方案是在钩子本身中设置一个复选框,如下所示: FooSchema.post('save', function processImages() { if (process.env.NODE_TESTING) return; // do image processing }); 但我不想直接解释钩子本身的状态。另一种更可取的方法是包装钩子并引入另一个接受环境列表的参
post.save
,但我不需要在测试期间运行这个钩子。一种解决方案是在钩子本身中设置一个复选框,如下所示:
FooSchema.post('save', function processImages() {
if (process.env.NODE_TESTING) return;
// do image processing
});
但我不想直接解释钩子本身的状态。另一种更可取的方法是包装钩子并引入另一个接受环境列表的参数,这样钩子的定义如下:
FooSchema.post('save', function processImages() {
// do image processing
}, { test: false, prod: true });
这种方法也不理想,因为我不想做任何包装。因此,我想听听是否有其他人已经解决了这一特定需求,如果是,采取了什么方法。谢谢 您可以将钩子包装起来并自行安装:
if (!process.env.NODE_TESTING) {
FooSchema.post('save', function processImages() {
// do image processing
});
}
这样,就永远不会在测试中安装它