【问题标题】:Do I read all documents again if there is a change in the Firestore database?如果 Firestore 数据库发生变化,我是否会再次阅读所有文档?
【发布时间】: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


【解决方案1】:

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

每次添加或更新结果集中的文档时都会向您收取阅读费用

【讨论】:

    【解决方案2】:

    这里的答案是视情况而定

    使用 Firestore 打开新的快照侦听器时,您会得到一个称为“恢复令牌”的东西,您可以将其视为会话。恢复令牌可帮助服务器尝试仅向您发送自您收到上次快照以来已更改的文档。但是,这些令牌会在

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 2021-07-28
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多