我有这个问题,如果请求进来,我从中间件内的db查询设置会话变量。在下一个中间件中,会话变量显示为Undefined。
但是,当我再次运行请求时,它会起作用。
请问我该怎么办呢。存储在先前中间件中的会话变量中的数据非常重要,并且需要下一个中间件才能工作。
所以我认为你不能在同一个请求周期中设置一个会话变量并访问它?
请参阅下面的代码
first middlware
function(req, res, next) {
Clients.findOne({subdomain: req.subdomains[0]}, function (err, client) {
if(!err){
if(!client){
//res.send(client);
res.send(403, 'Sorry! you cant see that.');
}
else{
//console.log(client);
req.session.Client = client;
//console.log(req.session.Client.dbUrl); even this console log shows undefined.
next();
}
}
}
第二中间件
function(req, res, next){
console.log(req.session.Client.dbUrl);
next();
}
在第一个中间件中,console.log在将session.Client设置为Client后显示未定义。 在第二个中间件中,console.log显示为未定义。
好的,我认为我已将其缩小到会话变量的设置。我做了一个测试,将req.session.test设置为一个字符串,这可行,但req.session.Client
谢谢。