2017-02-13 27 views
3

我正在開發一個單頁應用程序,它依賴於PouchDB用於在用戶使用該應用程序登錄時存儲狀態。我的應用程序狀態包括用戶數據,例如電子郵件地址,姓名等從PouchDB中刪除文檔,並在用戶註銷或關閉應用程序時保留它們

我是新來PouchDB並在瀏覽器中存儲數據的概念。我想知道什麼是最佳做法是什麼時處理的問題,如從PouchDB刪除/清除給定用戶的數據...

PouchDB/IndexedDB保留數據/文檔的優點和缺點(與刪除它)當用戶註銷或關閉並離開SPA時?

換句話說,這將是保持數據和使用的情況下刪除它在用戶登出的例子使用情況?

+0

我在這裏找到了有趣的指針:https://developers.google.com/web/fundamentals/instant-and-offline/web-storage/ – balteo

+1

非常感謝大家。兩個答案都非常相關。如果我能接受兩者,我會這樣做。 :-) – balteo

回答

1

典型使用案例:

  • 刪除身份驗證令牌:一旦用戶註銷時,任何身份驗證令牌將失效。無需再存儲它們。
  • 刪除個人或敏感數據: PouchDB根據您使用的瀏覽器將其數據存儲在IndexedDB或WebSQL中。正如您已經發現的那樣,存儲在那裏的數據「在特定設備內的跨會話和瀏覽器選項卡/窗口」中可用。 Source 因此,您希望儘可能縮短個人或敏感數據。

注意:充其量你不需要像上面提到的那樣在PouchDB中存儲數據,但這不是重點。

使用的情況下保持數據註銷後:

  • 請別的:那麼它取決於你的應用程序,但如果你的數據是不敏感的,爲什麼不保存呢?建立一個離線的第一個應用程序是所有關於不必從遠程數據庫獲取所有數據,所以... 唯一的限制是您正在運行的設備的存儲和用戶的善意。當然,這又取決於您的應用程序,但您可能需要確保,您沒有爲簡單的應用程序使用兆字節的存儲空間。
1

這主要歸結爲用戶體驗與數據的新鮮度。

PouchDB的目的是讓一個應用程序,以保持本地數據和同步其與後端系統。 (目前支持CouchDB和Couchbase作爲後端服務器的示例)。它也被設計爲允許多個客戶端進行更改。

大多數數據庫都期望中央系統的高可用性。它們旨在立即解決衝突。對於PouchDB,您預計在客戶端寫入時可能無法解決的衝突。

的核心思想是,你的應用程序將與不良或有時無網絡連接使用。本地保存信息意味着即使在這些情況下,您的應用程序也可以繼續工作。

主要權衡:

Keep

  • 應用仍舊可以提供有用的功能的W/O的網絡連接
  • 更快的響應時間
  • 降低整個網絡的數據傳輸(避免重新發送所有數據每次調用)
  • 可能需要注意解決衝突
  • 可以存儲過量數據的本地

Delete/Purge

  • 應用程序無法有意義功能離線
  • 應用需要保證用戶只能看到更新的數據
  • 應用程序使用的存儲量不可接受

注PouchDB是的NoSQL數據庫。 NoSQL數據庫無法執行「ACID」合規性。這意味着如果您的應用程序需要將數據更改爲原子(事務性),則這是錯誤的解決方案。

有很多用例最終一致的數據是好的。這可以很簡單,只需要一個客戶端和後端系統就什麼是正確的「同意」。或者它可能是一個複雜的系統,有多個作者進行更改,最終傳播並整合。

還有安全考慮。如果用戶在共享機器上,那麼您是否會爲用戶提供刪除敏感數據的方法?

作爲最後一點,您可能需要搜索「首先脫機」作爲應用程序開發的一種方法。一旦用戶註銷可能是刪除數據的

+0

有關構建「脫機優先」應用程序的價值的有趣演示,請觀看此視頻(使用Couchbase構建的移動應用程序,該應用程序提供了與PouchDB相似的優勢):https://www.youtube .COM /手錶?ν= tYolHnbCavA – Hod

相關問題