2016-10-03 58 views
1

是否有案件的任何模式時的東西(在我的情況下,它是一個過濾器)存儲在客戶端(例如localStorage),你需要爲每個用戶/版一次運行一個腳本來遷移您存儲數據。例如,最初有一些時候你決定,你需要單獨的每個環境的過濾器後的一個關鍵myFilter保存在localStorage過濾器,所以你需要單獨dev-myFiltertrain-myFilter,等你更新你的代碼與環境相關濾波器的工作,但有些用戶擁有舊的myFilter,並且您希望在下一個部署的版本中運行腳本,該腳本將更新保存的過濾器的密鑰(如果有)。JS「升級」模式

的問題是 - 什麼是該模式/最佳做法?

+0

如果數據不穩定,那麼它可能是謹慎的不使用localStorage .. – Pogrindis

+0

@Pogrindis我使用Redux和初始狀態它檢查localStorage並使用它,如果有設置。爲什麼謹慎使用localStorage? –

回答

1

我不知道「最佳做法」,但明顯的技術解決方案,就像任何API或存儲格式,是存儲旁邊的數據版本號。如果您從一開始就沒有這樣做,那麼在缺席時假設版本== 1。

如果數據結構是,那麼您可能可以避免這種情況,所以只有在通過檢查才能確定版本的版本之間是唯一的。

無論哪種方式,您只需每當你發現用戶的數據是舊的格式進行翻譯。

這樣做的缺點是,你必須繼續檢查;對於Web應用程序來說,這不太可能成爲瓶頸,但是如果您可以從一開始就使數據向前兼容,那麼您可以在每個請求上節省一點處理時間。但是爲了使數據有用,你必須閱讀它,所以只要你希望保持向後兼容性,一點分支也不會是一個大問題。

+0

我不喜歡每次運行檢查,除了可能有版本差異+版本控制的幾個數據結構之外,它會變得混亂。我正在考慮指定一個單獨的文件 - 對於此版本,我們運行此腳本將相應地轉換數據,但當用戶錯過某些升級並且無法直接從v1升級到v8時仍然存在問題 - 您需要做一步一步,所以必須每次運行這些檢查:( –