node.js アプリケーションで Web ページを提供するために Express を使用しています。
応答オブジェクトのメソッドfoo
によってレンダリングされるすべてのビューで変数を使用できるようにしたいとしましょう。render
このタスクの動的ヘルパーを定義できることはわかっています。ただし、次のようにヘルパー変数を非同期に設定する必要がある場合は、それらが不適切であることがわかりました (Mongoose の例)。
Thing.count(filter, function(error, thingCount) {
foo = thingCount;
}
私は完全に私に合った接続ミドルウェアアプローチを使用してみましたが、ここでの問題は応答コンテキストにどのように影響するかです。render
のメソッド定義を調べるexpress/lib/view.js
と、app._locals オブジェクトに書き込むことで操作できることがわかりました。
function putFooIntoContext (req, res, next) {
Thing.count(filter, function(error, thingCount) {
res.app._locals.foo = thingCount;
next();
}
}
意図したとおりに機能しますが、そのような単純なアプローチが最善の解決策ではないことを少し心配しています. Express開発者によって設計された適切な方法でリクエスト/レスポンスオブジェクトのみとやり取りすることで、レスポンスコンテキストに影響を与える方法を教えてもらえますか?