我注意到,为了将值存储到会话中,您只需调用 req.session.key = value 而无需指定回调。我使用 connect-mysql 模块将 mysql 设置为我的会话存储适配器。所以我想知道每次我将一个值保存到正在数据库中更新的会话时,不应该有一个与此相关的回调吗?然而,无论我看到哪里,人们都在愉快地同步使用它。有人可以解释为什么会这样吗?谢谢。
问问题
353 次
1 回答
1
session
中间件实际上每个请求只与数据存储交互两次,而不是每次更改都立即交互:
- 在请求开始时批量
Store#get()
检索Session
。(来源) - 使用
Store#set()
(viaSession#save()
)Session
在请求结束时批量保存。(来源)
session
在这些步骤之间,可以同步进行更改。它们只应该在调用res.end()
或类似的 ( res.render()
,res.json()
等) 被调用之前完成。
于 2012-07-29T13:11:34.397 回答