事务和批量写入都是原子操作的Firestore docs says - 所有更改都被写入或者没有任何更改。
这个问题是关于Firestore中的原子操作的变化是否可以部分观察,或者全部或者没有保证是否也适用于读者?
示例:
假设我们有一个Firestore数据库,其中包含至少两个文档X和Y.
我们还说至少有两个客户端(A和B)连接到此数据库。
在某些时候,客户端A执行批量写入,同时更新文档X和Y.
稍后,客户端B读取文档X并观察客户端A所做的更改。
现在,如果客户端B也会读取文档Y,是否可以保证A(在同一批次写入操作中)所做的更改会被观察到?
(假设对这些文件没有其他改动)
我已对其进行过测试,但我从未发现任何不一致之处。但是,仅仅测试这个问题就不够了。它归结为Firestore在所有情况下(高写入频率,大数据集,故障转移等)提供的一致性级别
可能是允许Firestore(在有限的时间内)将文档X的更改公开给客户端B但仍未公开文档Y的更改的情况。两个更改都将最终被曝光。
问题是;它们是作为原子操作公开的,还是仅为写入提供了这种原子性?
答案 0 :(得分:0)
我在Firebase Google Group中收到了Gil Gilbert的excellent response。
总之; Firestore确保读取也是一致的。我没有担心的部分观察。
然而,Gil提到两个案例是由于离线缓存和会话处理,客户端无论如何都会观察到这种不一致。
有关详细信息,请参阅Gil的回复(上面的链接)。