gpt4 book ai didi

javascript - ExpressJS > 路由器中间件 > 通过重定向传递变量 req.foo 不起作用

转载 作者:行者123 更新时间:2023-11-29 21:22:35 25 4
gpt4 key购买 nike

假设我有这个:

a) 2 个路由,每个路由有 1 个中间件函数和一个回调函数:

router.post('/foo', fooCtrl, function(req, res)
{
res.redirect('/bar');
});

router.get('/bar', barCtrl, function(req, res)
{
res.end('finished');
});

b) 2个中间件函数表达式

fooCtrl = function(req, res, next)
{
req.foo = 'foo';

next();
};

barCtrl = function(req, res, next)
{
console.log(req.foo); // output is 'undefined'

next();
};

如您所见,我在 fooCtrl 中设置了一个变量 req.foo - 在此范围内它被设置为...但我无法在 barCtrl 范围内调用此变量。

req对象不是引用传递的吗?

有什么建议或最佳做法吗?

这样做的目的是在登录后将 token 从登录 Controller 传递给管理 Controller ......类似的东西。

最佳答案

这是预期的行为。 req 对象为每个新请求和您的重定向重新创建,即 res.redirect('/bar') 导致新请求。

解决方案:您可以使用一些包,例如 connect-flash,它将变量存储在临时 session 对象中,只能使用一次。在重定向之前,您需要在 Flash 对象中设置所需的值。然后在重定向之后,您将能够从 Flash 对象本身获取保存的值。

关于javascript - ExpressJS > 路由器中间件 > 通过重定向传递变量 req.foo 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38250388/

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