有没有办法定义特定于环境的猫鼬中间件?

时间:2016-03-25 15:55:25

标签: node.js mongoose

我希望能够在特定环境中运行某些挂钩。例如,我有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 });

这种方法并不理想,因为我不想做任何包装。所以,我想听听其他人是否已经解决了这个具体需​​求,如果是,那么采取了什么方法。谢谢!

1 个答案:

答案 0 :(得分:1)

你可以自己包装钩子安装:

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

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