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

Node.js 在Restify中的res.send()事件之后?,node.js,restify,bugsnag,Node.js,Restify,Bugsnag,我正在尝试将Bugsnag添加到我的节点Restify服务中。我们已经有很多路由了,所以我尽量不在我们的代码库中添加Bugsnag调用,我也尝试做一些全局性的事情,这样开发人员就不会忘记添加错误报告 从概念上讲,我希望在任何res.send()之后获得状态代码。如果状态码>=400,我想通过调用Bugsnag.notify来通知Bugsnag。我已经到处检查错误,这样就不会有错误出现在客户端(浏览器、手机等),但它们确实会被发送,例如,res.send(401,{message:'你没有权限这么

我正在尝试将Bugsnag添加到我的节点Restify服务中。我们已经有很多路由了,所以我尽量不在我们的代码库中添加Bugsnag调用,我也尝试做一些全局性的事情,这样开发人员就不会忘记添加错误报告

从概念上讲,我希望在任何
res.send()之后获得状态代码。如果状态码>=400,我想通过调用
Bugsnag.notify
来通知Bugsnag。我已经到处检查错误,这样就不会有错误出现在客户端(浏览器、手机等),但它们确实会被发送,例如,
res.send(401,{message:'你没有权限这么做'})
我希望能够连接到它,并传递给尝试这样做的人,什么路线,等等。问题是我根本无法启动
after
事件:

server.on('after', function (req, res, route, error) {
  console.log('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==实际创建模型/数据

问题在于之后的
事件当前与任何其他处理程序一样处理。这意味着,如果不在每个代码路径中调用
next
,将永远不会发出
after
事件

同时,添加下一个调用将导致触发
after
事件处理程序

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