在Restify中res.send()事件之后?

我正在尝试将Bugsnag添加到我的Node Restify服务中。 我们已经有很多的路线,所以我试图不添加Bugsnag调用我们的代码库,我也试图做一些全球性的东西,所以没有错误,开发人员忘记添加错误报告。

从概念上讲,我希望任何res.send() 之后获得状态码。 如果statusCode> = 400,我想通过调用Bugsnag.notify来通知Bugsnag.notify 。 我已经检查到处都是错误,所以没有任何错误显示给客户端(浏览器,电话等),但是他们确实发送了,例如res.send(401, { message: 'You dont have permission to do that' })我希望能够挂钩和通过谁试图做到这一点,什么路线等问题是我无法得到after火灾:

 server.on('after', function (req, res, route, error) { console.log('AFTER') }); 

我想我误解了after事情。 在定义任何路由或其他中间件( server.use )之前,它位于index.js的顶部。

我的通用代码结构如下所示:

  server.post('/foo', function (req, res, next) { FooPolicy.create(req, function (err) { if (err) return res.send(err.code, err.data); FooController.create(req.params, function (response) { res.send(response.code, response.data) next(); }); }); }); 

FooPolicy ==检查权限
FooController ==实际上创build模型/数据

问题在于after事件目前像其他处理程序一样处理。 这意味着如果你不在每个代码path中调用next ,那么after事件将永远不会被发射。

在此期间,添加下一个呼叫将导致您的事件after处理程序触发。

 if (err) { res.send(err.code, err.data); next(); return; }