【问题标题】:Does Firestore sync only diff?Firestore 同步是否仅存在差异?
【发布时间】:2018-04-29 18:19:08
【问题描述】:

我想知道,Firestore 如何处理深度嵌套对象的实时同步?具体来说,它只同步差异吗?

例如,我有一个应用程序的状态,它只是一个包含 3 个值的数组,并且此状态在设备之间同步。如果我然后更改其中一个值,将同步整个新数组(在网络上传输)还是仅同步差异?如果我的状态是嵌套对象怎么办?

我问是因为我想同步整个状态,这是一个具有多个字段的对象,但是当我只更改单个字段时我不会同步整个对象。

【问题讨论】:

  • 我的回答对你有帮助吗?
  • @Eminem 这是一个很好的答案,但我不确定我们是否可以相信文档中的模糊陈述。我试图实际测试它(同步一个大对象,然后更新其中的一些字段),它看起来总是在同步整个状态。但也许我所做的完全错了。
  • 含糊不清的陈述?全部取自 firebase 文档,这是一个合乎逻辑的结论

标签: firebase google-cloud-firestore


【解决方案1】:

与实时数据库一样,Cloud Firestore 使用数据同步来更新任何连接设备上的数据。但是,它还旨在高效地进行简单的一次性获取查询。

默认情况下对查询进行索引:查询性能与结果集的大小成正比,而不是与数据集的大小成正比。

Cloud Firestore 只会将文件的差异发送给您的设备。

提示: 添加查询以限制您的侦听操作返回的数据,并使用仅下载数据更新的侦听器。

将您的侦听器放置在尽可能远的位置,以限制它们同步的数据量。您的听众应该接近您希望他们获得的数据。不要在数据库根目录监听,因为这会导致下载整个数据库。 希望对您有所帮助!

【讨论】:

  • 您能否提供“Cloud Firestore 只会向您的设备发送文件的差异”的来源?
  • 坦率地说,这是我从 Firestore 文档中得出的结论
  • @FrankvanPuffelen 嗨,弗兰克,很高兴收到您或 Firebase 本身的任何人关于这个问题的消息。
  • 我不相信你只有在监听变化时才会得到更新,你会得到文件。如果收听文档参考,您将获得一个文档(DocumentSnapshot)。如果你有一个查询监听集合引用的变化,你会取回你的查询返回的文档(QuerySnapshot,其中包含 QueryDocumentSnapshots)firebase.google.com/docs/firestore/query-data/listen@FrankvanPuffelen 这对吗?
  • 这个答案不正确。 Firebase 不会同步文档中的差异,而是在每次更改时发送整个文档。
猜你喜欢
  • 2019-08-31
  • 1970-01-01
  • 1970-01-01
  • 2021-01-11
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
相关资源
最近更新 更多