【发布时间】:2022-01-03 10:58:13
【问题描述】:
假设我们有一个带有 Firebase 后端的银行应用。我们可以看到我们当前的余额,我们可以添加一笔交易。
现在从编码的角度来看:
如果我们添加一笔交易,我们需要调整账户余额。由于这与安全相关(我们不希望有人操纵前端和调整账户余额),我们只添加交易并让后端(firebase 云功能)执行它。
但现在账户余额(用户界面)将无响应,直到后端添加交易并将其同步到前端,从而导致糟糕的用户体验。
预期行为:添加的交易直接反映到帐户余额。
如何解决这个问题?
我有很多想法:
- 让前端执行事务(感觉很糟糕)
- 在前端和后端执行它,前端只写入缓存,后端确认或覆盖缓存结果(感觉不错,但是如何只写入缓存而不是同步?)
- 处理表示层上的可见数据,直到后端覆盖/确认(与 2 相同,但在表示层上执行此操作的方式相同)
注意:我不认为这是一个基于意见的问题。我认为有做这些事情的标准方法,因此我认为这个问题是合法的。
任何帮助表示赞赏
编辑:它实际上不是一个银行应用程序。这是一个演示问题的简单示例。目标应用程序需要的安全性远低于银行应用程序,但问题仍然存在
【问题讨论】:
-
很抱歉,但在我决定将 Firebase 用于银行应用程序之后,我认为与安全性有关的一切都无关紧要。
-
它不是银行应用程序。我只需要一个简单易懂的例子。
-
嘿@Avinta,这个问题现在解决了吗?
-
不,给出的答案只是它现在如何工作的实现。我的问题是后端和前端之间的时间差(我立即看到了事务,因为它是由前端添加到 firebase 的,但我没有立即看到(需要等待几秒钟)结果。所以用户可能会明白程序被破坏并重新添加交易(坚持银行示例)
-
你能分享你得到的代码和错误吗?
标签: android firebase google-cloud-firestore google-cloud-functions