如果Firestore数据库发生更改,是否会再次阅读所有文档?

时间:2018-06-10 10:05:04

标签: android ios firebase google-cloud-firestore

假设我尝试使用Firestore侦听器获取用户喜欢的eventID列表。我也使用离线持久性。

来自这个帖子:Firestore - Using cache until online content updates

我知道将立即使用缓存的结果触发侦听器,如果有更改结果,我将获得另一个包含更改的快照。

enter image description here

在swift中,获取列表的引用是:

FirestoreDocumentReference.users(uidUser: uid).reference().collection("likedEvents").addSnapshotListener({ (snapshot, error) in )}

首先在firestore数据库中说我有100个被用户喜欢的eventID,然后用户喜欢另外50个事件,这意味着我现在在数据库中有150个喜欢的eventID。

由于数据库从100更改为150,Firestore会检查服务器是否正确?它会给我另一张快照。

我的问题是......

从firestore收到新快照后,我是否阅读了150份文件或50份文件?我的意思是,我是否再次阅读所有文件或只是更改了文件?

因为读取操作会影响firestore的定价

2 个答案:

答案 0 :(得分:3)

只需50 :-)
https://firebase.google.com/docs/firestore/pricing#listens

  

每次添加或更新结果集中的文档时,您都需要为读取付费

答案 1 :(得分:1)

这里的答案是取决于

当使用Firestore打开一个新的快照监听器时,你会得到一个名为" resume token"你可以把它想象成一个会话。恢复令牌可帮助服务器尝试仅向您发送自上次收到快照以来已更改的文档。然而,这些令牌在< = 30分钟内到期。因此,它取决于初始化快照侦听器后添加50个新文档的时间。