无法访问下一个中间件中先前中间件中设置的会话变量。在同一请求期间

时间:2014-06-15 22:26:35

标签: node.js session express

我有这个问题,如果请求进来,我从中间件内的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

谢谢。

0 个答案:

没有答案