【发布时间】:2020-02-10 00:36:21
【问题描述】:
尽管进行了大量搜索,但我在 Firebase 实时数据库中找不到任何与 Firestore 中可用的增量方法等效的方法。
我要解决的问题是我有一个票务应用程序,它在 Firebase 上为活动的参与者增加一个计数器;但是,如果一个用户离线并正在使用持久数据库注册与会者,而另一个在线用户也在这样做,那么当第一个用户重新在线时,他们会使用他们存储的值加上他们的任何其他与会者来覆盖计数器的值在重新上线之前进行验证。这没有考虑到计数器的值在它们重新联机之前已经更改的事实。将有 6 个人验证活动门票,因此如果有人重新连接并覆盖其他用户注册的值,此值将始终是错误的。所以如果有这样的增量方法:
increment = firebase.firestore.FieldValue.increment(1);
你能告诉我它是什么吗?如果不是,您将如何解决我在 Swift 中设备上的数据持久性问题?
注意我使用的是实时数据库而不是 Firestore,因为当您对数据库进行大量小更新时,建议使用它来提高速度和数据使用率——当您为数千人处理门票时,显然会出现这种情况。
【问题讨论】:
-
遗憾的是在 rtdb 上没有等价的增量,据此:github.com/firebase/firebase-ios-sdk/issues/257
-
谢谢——我认为没有。这是我进行的相当详尽的搜索,但我从未看到他们不会将其反向移植到实时数据库的评论。有关如何在 RTD 上处理此问题的任何提示?
-
我看到了这个帖子:stackoverflow.com/questions/37958109/…,但它有点旧,代码使用了一个监听器。但我不知道它对您的应用程序是否完全安全,因为如果 2 个人同时更新计数,他们可能都捕获了以前的值,而不是将计数更新为 +2,它只会是 +1。
标签: swift firebase firebase-realtime-database google-cloud-firestore