gpt4 book ai didi

node.js - router.use 中间件链未按预期工作?

转载 作者:太空宇宙 更新时间:2023-11-03 22:27:22 24 4
gpt4 key购买 nike

我有以下中间件:

injectParamMiddleware.js

module.exports = function(req, res, next) {
req.params.specialParam = 'specialValue';
next();
}

logParamMiddleware.js

module.exports = function(req, res, next) {
console.log(req.params.specialParam);
next();
}

场景 1

router.get('/resource/:resourceId', 
injectParamMiddleware,
logParamMiddleware,
...MoreMiddlewares)

场景 2

router.use('/resource/:resourceId', injectParamMiddleware, logParamMiddleware);
router.get('/resource/:resourceId', ...MoreMiddlewares);

运行 SCENARIO 1 时,我在控制台中记录了 specialValue。运行 SCENARIO 2 时,我在控制台中记录了 undefined

我希望 SCENARIO 2 也能记录 specialValue

非常感谢任何帮助。提前致谢。

编辑:我正在使用 Express 4.14.0 和 Node 6.10.3

最佳答案

场景 2 导致 Express 的“设计”错误,因为路由器是创建 params 的。它正在被覆盖

您可以将 var 分配给 app.use 中将传递给请求的另一个属性例如 req.specialParam = 'specialValue'

app.param('/user/:name', (req, res) => {
req.specialParam = 'specialValue';

});

其他选项是使用 .param() 方法修改参数:

app.param('/user/:name', (req, res) => {});

app.route('/user/:name')
.all((req, res) => { ... console log here })
.get((req, res) => { ... })

关于node.js - router.use 中间件链未按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43807828/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com