在express中,当我使用路由中间件时,可以附加到请求对象吗?或者这是一个糟糕的模式?备择方案?感谢。
app.get('/', getLayout, function(req, res){
if(req.layout == 'simple') ...render simple layout...
else ...render full layout...
});
,其中
getLayout = function(req, res, next){
req.layout = (req.params.blah == 'blah') ? 'layout_simple' : 'layout_full';
next();
}
答案 0 :(得分:5)
我不明白为什么你不应该这样做。
我做了很多。
我认为这是中间件通常所做的事情。
来自快递文档: http://expressjs.com/guide.html#route-middleware
他们将req.user作为当前用户设置在他们的中间件中。
答案 1 :(得分:0)
我同意j_mcnally,只要你不过分,这是一个很好的模式。具体来说,我附加了与res
对象的响应更密切相关的大多数内容。这将是布局信息,HTML片段,响应的中间jsdom env表示等等。对于req
,添加查询字符串或请求正文信息表示的事物是有意义的。这将是输入参数,解析的搜索查询,当前用户对象等等。
答案 2 :(得分:0)