javascript - 在 Node.js 和 express-session 中更改和刷新 session 数据

标签 javascript node.js session

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

req.session.user

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

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 

考虑像这样使用 session

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'

关于javascript - 在 Node.js 和 express-session 中更改和刷新 session 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28503436/

相关文章:

javascript - 通过 onClick 选择语言

php - Codeigniter - session 数据未通过数组保存在数据库中

node.js - Pg-promise:返回查询结果的正确方法

javascript - 为什么数组在响应中总是空的?

node.js - 在客户端和服务器 Mongoose 模型之间共享 typescript 接口(interface)

java - HttpSession 对象的输出

java - 跟踪 Java EE 中的用户 Activity

javascript - 代码可以在 JS Fiddle 上运行,但不能在 Chrome 或 Firefox 中运行

javascript - 使用一个 php 函数返回多个 json 对象

javascript - KnockoutJs 不会对自定义事件使用react