【问题标题】:Why doesn't node.js Express framework use a callback when setting a session variable?为什么 node.js Express 框架在设置会话变量时不使用回调?
【发布时间】:2012-07-29 12:38:26
【问题描述】:
我注意到,为了将值存储到会话中,您只需调用
req.session.key = 值
无需指定回调。我使用 connect-mysql 模块将 mysql 设置为我的会话存储适配器。所以我想知道每次我将一个值保存到正在数据库中更新的会话时,不应该有一个与此相关的回调吗?然而,无论我看到哪里,人们都在愉快地同步使用它。有人可以解释为什么会这样吗?谢谢。
【问题讨论】:
标签:
node.js
session
callback
express
【解决方案1】:
session middleware 每次请求实际上只与数据存储交互两次,而不是每次更改都立即交互:
- 使用
Store#get() 在请求开始时批量检索Session。 (source)
- 使用
Store#set()(通过Session#save())在请求结束时批量保存Session。 (source)
在这些步骤之间,可以同步更改session。它们应该在调用res.end() 或类似(res.render()、res.json() 等)之前完成。