1

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

4

1 回答 1

1

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

  1. 在请求开始时批量Store#get()检索Session。(来源
  2. 使用Store#set()(via Session#save())Session在请求结束时批量保存。(来源

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

于 2012-07-29T13:11:34.397 回答