Firebase 仅从Firestore下载更改/更新的文档

Firebase 仅从Firestore下载更改/更新的文档,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,作为firestore的新手,我正在努力使文档的下载数量尽可能少。我想我只能下载一次文档并离线存储它们。如果云中发生了更改,请下载新副本并替换该文档的脱机版本(为相关文档提供上次更改的时间戳,并在本地版本较旧时下载)。我还没有开始,但我会假设像这样的东西一定已经存在了,对吧 我不知道从哪里开始,谷歌也没有给我很多答案,除了FirebaseFirestore实例。我有一种感觉,这不是我正在寻找的东西,因为每次我想要检查更改时,人为地打开和关闭网络会很奇怪 我是否遗漏了一些东西,或者我即将发现这个问

作为firestore的新手,我正在努力使文档的下载数量尽可能少。我想我只能下载一次文档并离线存储它们。如果云中发生了更改,请下载新副本并替换该文档的脱机版本(为相关文档提供上次更改的时间戳,并在本地版本较旧时下载)。我还没有开始,但我会假设像这样的东西一定已经存在了,对吧

我不知道从哪里开始,谷歌也没有给我很多答案,除了
FirebaseFirestore
实例。我有一种感觉,这不是我正在寻找的东西,因为每次我想要检查更改时,人为地打开和关闭网络会很奇怪


我是否遗漏了一些东西,或者我即将发现这个问题的优化解决方案?

您所描述的不是Firestore内置的东西。您必须使用您在文档中阅读的Firestore功能来设计和构建它。默认情况下,持久性是启用的,但这并不能解决您的问题,这在这里有相当广泛的说明

归根结底,Firestore和它的本地缓存都不了解如何根据您选择的“更改”定义来优化只下载已更改的文档。当您查询Firestore时,默认情况下,Firestore将始终转到服务器并下载与您的查询匹配的完整文档集。如果只想查询本地缓存,也可以这样做,但它不会咨询服务器或知道任何更改。这些功能不足以实现您描述的优化

如果希望只获取自上次查询以来的文档更改,则必须设计数据,以便可以进行此类查询,方法可能是向每个文档添加时间戳字段,并使用该字段查询自上次查询以来已更改的文档。您可能还需要管理自己的本地缓存,因为SDK的本地缓存可能不够灵活,无法满足您的需要

我建议您阅读更详细地描述本地缓存实际如何工作以及如何利用(或不利用)它的文章