我注意到,为了将值存储到 session 中,您只需调用 req.session.key = 值 无需指定回调。我已使用 connect-mysql 模块将 mysql 设置为我的 session 存储适配器。所以我想知道每次我将一个值保存到 session 中时,它都会在数据库中更新,难道不应该有一个与此相关的回调吗?然而,我所看到的每个地方,人们都在愉快地同步使用它。有人可以解释为什么会出现这种情况吗?谢谢。
最佳答案
session
middleware每个请求实际上只与数据存储交互两次,而不是每次更改都立即交互:
- 使用
Store#get()
在请求开始时批量检索Session
。 (source) - 使用
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/