【发布时间】:2018-11-19 19:25:35
【问题描述】:
假设我尝试使用 Firestore 侦听器获取用户喜欢的 eventID 列表。我也使用离线持久化。
来自这个帖子:Firestore - Using cache until online content updates
我知道侦听器将立即从缓存中获取结果,如果有更改结果,我将获得另一个包含更改的快照。
在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的定价
【问题讨论】:
-
这取决于您如何阅读事件。由于您没有表明这一点,因此很难回答。通常,Firestore 客户端和服务器协同工作以最大限度地减少读取的文档数量。
-
我使用这段代码来读取事件:FirestoreDocumentReference.users(uidUser: uid).reference().collection("likedEvents").addSnapshotListener({ (snapshot, error) in )}跨度>
-
先生,能否请您帮我详细说明一下“您是如何阅读活动的”?
-
快照侦听器将为您提供查询范围内所有文档的快照。如果这些文档在本地缓存中是最新的,则侦听器将从缓存中返回文档而不从服务器读取它。该文档在缓存中是最新的,如果启用了缓存(默认情况下),则该文档之前已加载,并且尚未修改。因此,如果一切顺利,第二次调用快照侦听器回调仅计入额外的 50 个文档。见stackoverflow.com/a/48491561
-
相信this video会帮到你。
标签: android ios firebase google-cloud-firestore