无法覆盖express中的会话变量

时间:2017-03-14 03:50:33

标签: ajax node.js session express-session

我正在使用ajax调用来设置会话变量,例如:

 $.ajax({
           url: "url", -- a call to node layer
           type: 'GET',
           success: function (response) {


           }

       });

在节点层,我正在进行API调用以设置新的会话值,如:

getxxx:function (req, res){

        var options = {};
        var self=this;
        options.headers = {};
        options.headers['Authorization'] = req.session.Authorization;
        options.headers['loginId'] = req.session.userName;
        var data={};       

        proxyAPI.getData(common.getEndpointURL("XXX", req.session.userName), {}, options, function(err, response, statusCode){
            data.xxx = response;            
            if(data.xxx && data.xxx.count) {
                req.session.count = data.xxx.count;
                req.session.save();

            }
        });   

    },

我的App.js看起来像这样:

app.use(sessionexpress({
        secret: 'secretKey',
        cookie: {
            maxAge: config.timeout,            
            secure: config.sslEnabled
        },
        rolling: true,
        saveUninitialized: true,
        resave: true,
        store: new MemcachedStore({
            hosts: [config.sessionStore.uri],
            secret: config.sessionStore.secret 
        })
    }));

方案:
在回调函数中,我需要将API层的更新值设置为会话变量。 目的是在另一页中使用值(req.session.count)。

问题是: 当我尝试访问另一个页面中的req.session.count变量时,该值不会显示更新的值,而是显示在应用启动时分配的值。

我在这方面做错了什么?

注意: 如果我在没有任何API调用的情况下更改会话变量,请执行以下操作:

req.session.count = 100;
req.session.save();

我能够在其他页面中获得新的会话值(即100)!

0 个答案:

没有答案