更改和刷新 Node.js 和 express-session 中的会话数据

change and refresh session data in Node.js and express-session

我正在使用 Node.js 以及 express-session 和 我有这个保存用户信息的会话数据

req.session.user

现在当用户更新信息时,我将会话设置为新数据,然后重新加载它

req.session.reload(function(err) {
req.session.user = user;
});

应该可以,但是 req.session.user 仍然显示旧信息,为什么? :(
非常感谢

您正在重新加载,然后再保存您的更改。保存通常在请求结束时自动发生。 session.js 中有一项测试 demonstrates that behaviour

使用 req.session.reload() 恢复当前在处理请求时所做的更改 ...

req.session.example = 'set on set_reload'
req.session.reload( function (err) {
    res.render('index', { title: req.session.example });
});
// next http get request
// req.session.example == value before the call above 

考虑像这样使用会话

req.session.example = 'set on set';
res.render('index', { title: req.session.example });
// next http get
// req.session.example == 'set on set'

如果您确实有使用 req.session.reload() 的理由,那么这种用法会给您带来所需的行为

req.session.example = 'set on set_save_reload';
req.session.save( function(err) {
    req.session.reload( function (err) {
         res.render('index', { title: req.session.example });
    });
});
// next http get
// req.session.example == 'set on set_save_reload'