我正在使用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)!