【问题标题】:How can I use local cache and only update changed documents using Firestore?如何使用本地缓存并仅使用 Firestore 更新更改的文档?
【发布时间】:2021-12-31 13:47:03
【问题描述】:

我正在开发一个日历应用程序,目前正在从 firestore 获取数据以填充日历。最终,会有很多数据要获取,我试图了解 Firestore 的缓存系统,但无法理解它。 我理想中想要达到的目标:

始终使用缓存数据并仅更新那些新的、已编辑或已删除的文档。

我将如何做到这一点?

【问题讨论】:

  • 每当您向 Firestore 集合添加观察者时,您都会看到该集合的初始数据。这使您能够使用新数据填充您的 UI。然后,Firestore 将显示更改的数据(添加、更改或删除),以便您可以实时更新您的 UI。无需使用或缓存数据
  • 我实际上想使用缓存来防止大量读取,因为将来某个时候我会得到相当多的数据。我目前正在使用 onSnapshot,它工作得非常好,但它在某些时候我担心的读取量。
  • 您可以向侦听器函数添加查询。读取数据时,存储发生时间的时间戳。下次读取数据时,仅在该时间戳之后添加一个侦听器。那么您将只查看“新”数据。

标签: firebase react-native caching google-cloud-firestore


【解决方案1】:

如果要强制SDK从缓存中读取,可以specify source options when calling get()

如果您发现自己到处都在这样做,考虑使用 Firestore 以外的其他数据库可能是有意义的,因为它主要是一个在线、云托管的数据库,在您暂时离线时可以继续工作。

【讨论】:

  • 感谢您的回答。我实际上想从缓存中读取应用程序的一部分(日历部分),因为在某些时候会有很多数据。为了节省读取成本,我想从缓存中加载,只更新实际编辑、添加或删除的文档。我猜其他日历应用也有同样的方法。
  • 还没有完全回答。我知道我可以使用“get()”并指定源,但是这样做不会更新任何更改的文档。就我而言,我想知道是否可以将“get()”与源“缓存”和一个侦听器结合起来,以更新任何更改、新文档或已删除的文档。当我打开一个日历应用程序时,例如谷歌日历,我可以立即看到我的所有数据和一个加载图标,加载后的更改将可见。我不想每次打开应用程序时都获取所有数据。
  • 您在寻找stackoverflow.com/…吗?
  • 嘿@CrypticalMindz 你在这方面有什么进展吗?
  • 嘿@Frank,我真的没有。我将很快对该应用程序进行 Beta 测试,并将了解获取数据的行为方式。根据不同的文档,使用firebase时获取的数据会自动持久化。然后,已知的 onSnapshot 将检查刚刚更新的数据。我无法确认是否是这种情况。我会尽快发现并通知您!感谢您的提问。
猜你喜欢
  • 2019-07-04
  • 2020-02-04
  • 1970-01-01
  • 2021-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多