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

标签 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) => {

});  

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

最佳答案

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

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

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);
}

关于node.js - ExpressJS 中间件 | req.params 在中间件中不可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45631902/

相关文章:

node.js - 提交两次相同请求时 HTTP header 出错

javascript - 如何在 Node.js 中编写中间件类

node.js - 如何阻止 Protractor 下载最新的 chromedriver?

javascript - 为什么我的 JSON 文件显示单个键中的所有值?

javascript - 如何在 Mongoose 中分页而不重复?

Javascript promise 不会通过 async/await 返回

javascript - Express Router Regex - 如何匹配包含连字符的字符串文字?

html - 无法在 HTML 文件中链接 CSS/JS 文件

javascript - 来自全局中间件的 ExpressJS : how to dump req. 参数

php - Laravel 中间件 : Header may not contain more than a single header, 检测到新行