我有一個應用程式,我想在其中共享一個單例類 - 在應用程式開始時創建單例,在整個應用程式中設定和使用用戶特定的資料。這現在效果很好,但我不確定當多個用戶訪問應用程式時這種方法會如何表現。我認為這不是執行緒安全的,并導致共享資料被使用它的不同行程覆寫。這個對嗎?
uj5u.com熱心網友回復:
我認為這不是執行緒安全的,并導致共享資料被使用它的不同行程覆寫。
那是對的。
“在整個應用程式中使用”是什么意思?
- 即使用戶注銷并稍后再次登錄,與用戶相關的資料仍然存在?那將需要一個資料庫。
- 還是僅在登錄和注銷之間需要的資料?
在后一種情況下,您需要會話處理,其中資料與一個瀏覽器會話相關聯(技術上是在瀏覽器關閉時洗掉的會話 cookie)。一個示例是express-session允許您將所有與會話相關的資料寫入req.session物件的包,并且該物件將被使用相同會話 cookie 發出的所有請求重用(即,用戶瀏覽器向您的應用程式發出的所有請求,直到瀏覽器已關閉)。
req.session但是,該物件必須可以通過 JSON 序列化,因此它不能是類實體。請參閱包檔案中的此示例。
或者,如果僅在一個請求期間需要資料(由多個中間件函式共享),您可以將它們寫入res.locals. 這甚至可以保存類實體。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/411356.html
標籤:
