有没有一种方法来定义环境特定的mongoose中间件?

我想只能在特定的环境中运行某些钩子。 例如,我有一个post.save来完成image processing,但是在testing过程中我不需要运行这个钩子。 一个解决办法就是像下面这样检查钩子本身:

 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 }); } 

这样,它将永远不会被安装在testing中。