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