@app = express.createServer()
@app.use express.bodyParser()
在 HTTP 请求/响应结束时,我想执行一个操作(关闭数据库连接)。这最好在响应发送到客户端之后发生,这样客户端就不会等待它,但如果它内联发生,我总是可以做一个process.nextTick。
如何在响应结束时注册回调?
@app = express.createServer()
@app.use express.bodyParser()
在 HTTP 请求/响应结束时,我想执行一个操作(关闭数据库连接)。这最好在响应发送到客户端之后发生,这样客户端就不会等待它,但如果它内联发生,我总是可以做一个process.nextTick。
如何在响应结束时注册回调?
HTTP 响应是一个可写流。当流关闭时,会发出完成事件。因此,听它就可以了:
res.on('finish', function() {
console.log(res._headers);
});
灵活得多。可以放在中间件或资源处理程序中。
所以你想在每个请求中打开/关闭/打开/关闭与数据库的连接?保持它打开并重用连接会更好。
如果您确实想在将响应发送回客户端(对于所有路由)之后做某事,您可以制作一个覆盖该res.end()
函数的中间件(这是最后一个调用的,如下所示:
@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