2016-03-25 18 views
1

我想只能在特定的环境中运行某些钩子。例如,我有一个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 }); 

这种方法是不理想的或者是因为I” d宁愿不必做任何包装。所以,我想听听其他人是否已经解决了这个具体需​​求,如果是的话,采取了什么方法。谢谢!

回答

1

你可以换钩安装本身:

if (!process.env.NODE_TESTING) { 
    FooSchema.post('save', function processImages() { 
    // do image processing 
    }); 
} 

这样,它永远不会被安装在测试。