node.js - 为什么 Node.js Express 框架在设置 session 变量时不使用回调?

标签 node.js session callback express

我注意到,为了将值存储到 session 中,您只需调用 req.session.key = 值 无需指定回调。我已使用 connect-mysql 模块将 mysql 设置为我的 session 存储适配器。所以我想知道每次我将一个值保存到 session 中时,它都会在数据库中更新,难道不应该有一个与此相关的回调吗?然而,我所看到的每个地方,人们都在愉快地同步使用它。有人可以解释为什么会出现这种情况吗?谢谢。

最佳答案

session middleware每个请求实际上只与数据存储交互两次,而不是每次更改都立即交互:

  1. 使用 Store#get() 在请求开始时批量检索 Session。 (source)
  2. 使用 Store#set() (通过 Session#save() )在请求结束时批量保留 Session。 (source)

在这些步骤之间,可以同步完成对 session 的更改。它们应该在调用 res.end() 或类似的(res.render()res.json() 等)之前完成。

关于node.js - 为什么 Node.js Express 框架在设置 session 变量时不使用回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11709292/

相关文章:

javascript - 使用 Puppeteer 选择复选框

java - 微服务中的 session 管理

asynchronous - 在 Meteor.call 回调中对 sys.exec 的 Meteor 回调

c++ - 自 lambda 进入 C++ 以来, `Callback` 接口(interface)是否已过时?

c++ - 无法将模板函数作为回调参数传递

node.js - 在 Ubuntu 16.04 中安装 ionic 时出错

node.js - ES6 - 导入文件的重复声明

javascript - curl获取的文件如何清除

session - 如何在 Openshift3 中禁用粘性 session

c# - 使用什么对象来锁定来自单个 session 的线程(来自单个连接的用户)