我应该使用firebase云功能吗?

时间:2017-12-12 16:46:04

标签: android json firebase firebase-realtime-database google-cloud-functions

我目前正在使用firebase实时数据库制作费用管理器应用。 我在firebase上的数据如下所示:

{ Txns:[{s:"x", amount:1000 }
        {x:"x",  amount:2121 }
        ...
       ]
  Balance: {total:2000(sum of all amounts in txns array)}

}

现在,我想在json数组中添加所有金额并将其存储在“balance:”中。那么,我应该使用谷歌云功能,或者我应该在客户端设备上进行计算? 我知道谷歌云功能是一种聪明的方法但是,每次用户输入json对象都会被添加到数组中,谷歌云功能将在每一个条目上运行更新余额,谷歌提供一些有限的读取和写入他们的免费计划。 那么,我是否应该担心读写操作计数?

1 个答案:

答案 0 :(得分:0)

Firebase实时数据库pricing不基于读取或写入操作的数量。它主要基于存储和下载的数据大小。随着交易数量的增加,只读取余额,而不是阅读所有交易,将很快变得更便宜。

可以从写入事务的每个客户端更新余额。在这种情况下,您需要通过安全规则确保余额更新,确保余额按交易金额更新。并且您需要使用事务来进行这些更新,或者(最好)在更新被拒绝时实现您自己的客户端重试逻辑。虽然这绝对是可能的,但它可能会非常麻烦。我建议您在此处阅读我的答案,以获取如何入门的示例:Is the way the Firebase database quickstart handles counts secure?

或者,您可以创建一个受信任的环境,例如您控制的服务器或云功能,负责更新余额。这样做的一个优点是您不必再担心安全规则了。但缺点是这只适用于客户端连接到服务器的情况,客户端平衡更新的方法可以透明地工作,而客户端在线时(至少在大多数情况下)。