2012-07-29 35 views
1

我已經注意到,爲了在會話中存儲一個值,您只需調用 req.session.key =值 而不需要指定回調。我使用connect-mysql模塊將mysql設置爲會話存儲適配器。所以我想知道,考慮每次我保存一個值的會話,它正在更新數據庫中,不應該有一個回調與此相關?然而在我看來,人們都樂於同步使用它。有人可以解釋爲什麼會出現這種情況嗎?謝謝。爲什麼node.js Express框架在設置會話變量時使用回調?

回答

1

session middleware實際上僅與數據存儲每個請求交互兩次,而不是立即與每個變化:

  1. 隨着Store#get()在一個請求的開始取回散裝Session。 (source
  2. Store#set()(通過Session#save())在申請結束時將Session保留爲散裝。 (source

在這些步驟之間,可以同步更改session。他們只應在res.end()或類似的(res.render(),res.json()等)被調用之前完成。

+0

非常感謝。 – ReneGAED 2012-07-29 13:56:57