Flutter Firestore使设备上的runTransaction瞬间生效

时间:2018-06-05 19:03:47

标签: dart google-cloud-firestore flutter

自从开始使用DatabaseReference.runTransaction函数以来,我遇到了问题。

观看了最新的Google Developers Flutter promotion video后,我现在有信心准确地提出这个问题了!

使用 DatabaseReference.updateData会立即将信息传递给Stream<QuerySnapshot>。这可以be seen here。当他点击该项目,即更新updateData时,计数器也会立即更新,这是非常好的预期行为这意味着您执行更新的设备会立即更新,但另一台设备从服务器获取延迟。

转换到runTransaction时,此功能完全丢失,您必须等待设备未处理但从Firestore发送的常规更新。 Looking at the new implementation,您可以清楚地看到延迟,并且比两个设备同时更新更糟糕。从这一点可以清楚地得出,设备上没有 数据更新,这对UI来说非常烦人。

没有搜索的解决方法,因为我显然已经实现了这一点,这意味着我自己管理我的更新,在这种情况下,我会在内部更新计数器在更新程序上。

我想知道的是, {{1>是否有办法启用 瞬时 行为 }}

2 个答案:

答案 0 :(得分:2)

交易不能是即时的。他们总是需要与服务器进行往返,以确保真正正确和原子更新。

答案 1 :(得分:1)

我怀疑这是可能的,否则它不会是交易。 事务必须是ACID,因此需要在中心点(服务器)进行协调。

这就是为什么对于事务没有本地更新然后同步到服务器。