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