快递会话不会持久

Som*_*ens 5 javascript node.js express

我正在尝试在节点中设置基本会话系统.这是我到目前为止所得到的:

app.js:

app.use(express.cookieParser('stackoverflow'));
app.use(express.session());
Run Code Online (Sandbox Code Playgroud)

我在ajax.js中设置会话数据:

addClassToCart: function(req, res) {
  req.session.cart = req.body.classId;
  console.log(req.session.cart);
}
Run Code Online (Sandbox Code Playgroud)

这会记录正确的信息.但是,当我尝试在其他地方检索该信息时(相同的文件,不同的功能):

console.log(req.session.cart);
Run Code Online (Sandbox Code Playgroud)

我得到undefined.我觉得我错过了一些非常基本的东西.各种各样的教程要么很糟糕要么要求我添加更多的包(我试图避免的东西).

我调试的更多数据:

  • 这适用于非AJAX请求
  • 会话在记录之前设置.

Som*_*ens 5

事实证明,问题不在于Express'会话(正如其他答案似乎认为的那样).相反,这是我的误解.我改为addClassToCart以下内容:

addClassToCart: function(req, res) {
    req.session.cart = req.body.classId;
    console.log(req.session.cart);
    res.send('class added');
  }
Run Code Online (Sandbox Code Playgroud)

添加res.send()修复了问题.

  • 嘿! 我通过执行req.session.save()手动触发更新来修复我的问题.您无需发送回复. (2认同)