ExpressJS中间件| req.params在中间件中不可用?

时间:2017-08-11 09:41:20

标签: node.js express middleware

这是ebayApi.handleParams:

handleParams : (req, res, next) => {
    for(var param in req.params){
        for(var key in ebayApi.request){
            param == key ? ebayApi.request[key] = req.params[param] : key = key
        }
    }
    next();
},

当我这样做时

app.use(ebayApi.handleParams);

中间件被执行,但req.params在内部时没有相同的值

app.get( '/search', (req, res) => {

});

所以我被迫使用像这样的中间件

app.get( '/search', ebayApi.handleParams, (req, res) => {

});  

有没有办法解决它?每当我创建一个新路由时,我想摆脱所有额外的输入..这是一个需要应用于所有传入请求的中间件..

1 个答案:

答案 0 :(得分:0)

还有人对解决方案感兴趣吗?

我所做的是创建一个必须通过中间件的每个路由的数组,然后循环通过数组并以这种方式应用它,而不是为每条路径硬编码。

var routes = [ '/profile/:UserID', '/categories/:CategoryID', '/item/:itemId', '/search/:keywords/:filter*?', '/keywords/:keywords']
for(var route in routes){
    app.all(routes[route], middleware.ebay.handleParams);
}