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

HTTP リクエスト/レスポンスの最後に、アクションを実行したい (データベース接続を閉じる)。これは、クライアントが応答を待機しないように、応答がクライアントに送信された後に発生することが望ましいですが、インラインで発生する場合は、常にprocess.nextTickを実行できます。

応答の最後にコールバックを登録するにはどうすればよいですか?

4

2 に答える 2

7

HTTP 応答は WritableStream です。ストリームが閉じると、finish イベントが発行されます。したがって、それを聞くとトリックが行われます。

res.on('finish', function() {
    console.log(res._headers);
});

はるかに柔軟です。ミドルウェアまたはリソース ハンドラーに配置できます。

于 2014-08-25T13:58:50.327 に答える
1

リクエストごとにデータベースへの接続を開いたり、閉じたり、開いたり、閉じたりしたいですか?開いたままにして、接続を再利用する方がはるかに優れています。

応答をクライアントに送り返した直後に何かをしたい場合 (すべてのルートに対して)、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
于 2012-06-14T14:31:08.410 に答える