2012-02-19 19 views
2

明示的に、ルーティングミドルウェアを使用する場合、要求オブジェクトに追加するのは問題ありませんか?それとも悪いパターンですか?代替案?ありがとう。なぜあなたはいけないreqパラメータに安全に追加できますか?

getLayout = function(req, res, next){ 
    req.layout = (req.params.blah == 'blah') ? 'layout_simple' : 'layout_full'; 
    next(); 
} 

答えて

5

は私が表示されていない

app.get('/', getLayout, function(req, res){ 
    if(req.layout == 'simple') ...render simple layout... 
    else ...render full layout... 
}); 

多くあります。

私はこれがミドルウェアが典型的に何をしているかの印象を受けています。 http://expressjs.com/guide.html#route-middleware

彼らは現在のユーザーとして自分のミドルウェアにreq.userを設定します。速達ドキュメントから

+0

ありがとう、彼らがそれを使用したときに逃している必要があります – Mike

+0

問題は、私もベストプラクティスの奴隷です:) –

0

私はj_mcnallyに同意します。これは船外に出られない限り、これは素晴らしいパターンです。具体的には、回答に密接に関連するほとんどのものをresオブジェクトに追加します。これは、レイアウト情報、HTMLフラグメント、応答の中間表現jsdom env表現などのようなものです。reqについては、クエリー文字列の表現であるものや要求のボディ情報にタックを付けるのが理にかなっています。ための

http://expressjs.com/guide.html#route-middleware

しかし、それはかなりのパフォーマンスに影響を与えることができます。これは、明示ドキュメントは、それがやや標準的な慣行だ示唆

関連する問題