在node.js http响应的末尾运行清理代码

在node.js http响应的末尾运行清理代码,node.js,express,Node.js,Express,在HTTP请求/响应结束时,我想执行一个操作(关闭数据库连接)。这最好在响应发送到客户机之后发生,这样客户机就不会等待它了,但是如果它是内联发生的,我总是可以做一个测试 如何在响应结束时注册回调?因此您希望在每个请求中打开/关闭/打开/关闭与数据库的连接?最好保持它的开放性,并重用连接 如果您确实希望在将响应发送回客户端(对于所有路由)之后执行某些操作,则可以创建一个中间件,覆盖res.end()函数(这是最后一个调用的函数,如: @app = express.createServer()

在HTTP请求/响应结束时,我想执行一个操作(关闭数据库连接)。这最好在响应发送到客户机之后发生,这样客户机就不会等待它了,但是如果它是内联发生的,我总是可以做一个测试


如何在响应结束时注册回调?

因此您希望在每个请求中打开/关闭/打开/关闭与数据库的连接?最好保持它的开放性,并重用连接

如果您确实希望在将响应发送回客户端(对于所有路由)之后执行某些操作,则可以创建一个中间件,覆盖
res.end()
函数(这是最后一个调用的函数,如:

  @app = express.createServer()
  @app.use express.bodyParser()

HTTP响应是一个可写流。当该流关闭时,会发出一个完成事件。因此,监听该响应可以实现以下目的:

@app.use (req, res, next) ->
  var oldEnd = res.end;
  res.end = ->
    oldEnd.apply(res, arguments)
    # do stuff after sending the response back to the client

更灵活。可以放在中间件或资源处理程序中。

我每个请求都有一个连接,因为该连接不能同时用于两个不同的查询。如果应用程序执行得不够好,我可能会引入连接池。在这种情况下,我也可以使用您的解决方案将连接返回到池中。T汉克斯。
res.on('finish', function() {
    console.log(res._headers);
});