前提
手头的问题是一个多方面的问题。在实际生产环境中遵循什么课程,在安全性与生产成本方面什么被认为是更好的解决方案等。
我目前正在开发一个使用 Redux 存储应用程序状态树的 React Web 应用程序。同时,我正在使用 Spring Boot 创建一个 RESTful API 作为后端服务器,React 应用程序可以依赖它来进行各种操作。我将用户数据(无论是身份验证、元数据和应用程序特定数据)存储在 Firestore 中,只能由 Spring 后端访问(出于安全原因)。当用户正确登录 React 应用程序时,会发送一个 GET 请求以从 Firestore 获取他们的数据。
困境
现在,当用户在登录时更改他们的数据时,我面临以下困境。
- 要么更新本地状态,特别是在 Redux 中,然后发送一个 POST 请求来更新存储在 Firestore 中的数据,
- 或者,直接从一开始就分派 POST 请求,然后分派另一个 GET 请求以获取更新的状态。
优点和缺点
第一种方法在用户体验方面似乎更好,因为用户会立即获得他的操作已完成的视觉反馈(比如他想从帖子列表中删除帖子,帖子会立即被删除)。本地存储负责应用程序的呈现,因此无论等待 POST 请求完成,用户都将正确更新。当然,这也不是很好,因为当数据库中的实际数据尚未更新时修改本地存储根本不安全或真正同步。
第二种方法,它引入了可能(或可能不会)需要很长时间才能得出结论的可能繁重的操作。但是状态总是正确的,或者至少只要 Firestore 数据库具有未损坏的表示。
因此,综上所述,您对满足用户体验和安全性的正确方法有何看法。(请记住,本地存储永远不会作为与数据库同步的基础。如果本地存储被篡改或损坏,更改将永远不会到达数据库。)