自从开始使用 DatabaseReference.runTransaction
功能,我有一个问题。
已观看最新Google Developers Flutter promotion video ,我现在有信心把这个问题准确的呈现出来!
使用 DatabaseReference.updateData
将信息立即传递给Stream<QuerySnapshot>
.这可以be seen here .他点击该项目的那一刻,即 updateData
更新后,计数器也会立即更新,这是非常好的预期行为。 这意味着您执行更新的设备立即更新,但其他设备从服务器获取延迟。
您转换到 runTransaction
的那一刻,此功能完全丢失,您将不得不等待不在设备上处理但从 Firestore 发送的定期更新。 Looking at the new implementation ,您可以清楚地看到存在延迟,比这更糟糕的是两个设备 同时更新。从这一点可以清楚地得出没有设备上数据更新,这对 UI 来说非常烦人。
我没有搜索解决方法,因为我显然已经自己实现了,这意味着我正在自己管理更新,在这种情况下,我会在点击时在内部更新计数器在更新程序上。
我想知道是否有办法启用 瞬时 行为 runTransaction
.
最佳答案
我怀疑这是可能的,否则它就不是交易。 交易必须是 ACID因此需要在一个中心点——服务器进行协调。
这就是为什么对于事务没有本地更新然后同步到服务器的原因。
关于dart - Flutter Firestore 使设备上的 runTransaction 瞬间完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50707246/