我的Flutter应用程序需要一个滚动计数器(1、2、3、…、98、99、1、2和3…(。考虑到可能有多个Flutter应用请求并递增滚行计数器函数管理计数器是有意义的(我通常使用TypeScript(。(请注意,如果有帮助的话,我还使用Cloud Firestore和Realtime Firebase。(
我可以很容易地创建一个谷歌云函数,它使用类似FieldValue.increment
的东西来增加计数器。我关心的是原子地获取值,然后以并发不会产生问题的方式递增。限制文件读/写成本的策略也可能很有吸引力。
什么是好的策略
我认为您正在寻找的是一个firestore事务,这将确保数据以原子方式正确更新。如果该文档被另一个客户端修改,则该事务将尝试重新运行";"有限次数";。
请参阅此处的交易文档:https://firebase.google.com/docs/firestore/manage-data/transactions
您可以在客户端或云功能中使用事务,具体取决于最适合您的需求。如果您只是增加值,那么客户端函数应该工作得很好,假设您可以使用必要的安全规则正确地保护Firestore DB。