firebase - 如何减少一次又一次的firebase数据库查询?

标签 firebase flutter google-cloud-firestore

我目前正在使用 Flutter 开发一个电子商务应用程序,它使用 Firebase 作为后端。 我对 Cloud Firestore 有一些担忧和困惑,因此我需要您的帮助。

我面临的一些问题是:

  1. 假设我的收藏中有 1000 种产品,我想在用户运行和滚动应用程序时逐渐加载这些产品,问题是每次用户退出并再次运行应用程序时,都会再次调用数据库我已经提供过相同的数据,最终会花费我更多的阅读次数。

我不知道如何处理这种情况,我也找不到合适的解决方案。

  1. 我想要一种方法来加载一次产品并将其保存在用户的内存中,以便下次用户运行该应用程序时,首先它会尝试从缓存中加载,然后在该查询之后,服务器更多数据并再次将其保存到缓存中。

  2. 我只希望应用程序仅在数据库发生某些变化时监听并更新缓存,例如我更改产品价格或标题时。我不想每次用户运行应用程序时都获取。

  3. 我的简单问题是,在 Flutter 中管理此类情况的有效方法是什么?请帮助我并就此问题提供一些指导。

如果您认为有任何视频或博客文章可以帮助我解决这种情况,请一并提及。

最佳答案

这就是我通常做的。

在数据库中保存一个整型变量,表示数据的版本,例如:

version = 1

每次重新打开应用时,从数据库中读取版本,如果与用户设备本地保存的版本不同,则从在线数据库中重新加载数据。

要将数据保存在 Flutter 本地,您可以使用类似 Hive 的数据库(非常高性能)或 Postgres (好查询,但有点慢)

另外,滚动商品时,如果还没有离线保存,则添加到数据库中。

由于数据量很大,即使更新一个,也会从数据库中重新下载所有数据。 如果您不想从数据库中读取所有内容,而不是保存一个整数变量,您可以保存一个包含添加或修改的产品 ID 的数组,并在保存数据时通过清空数组仅查询后者

关于firebase - 如何减少一次又一次的firebase数据库查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62633566/

相关文章:

flutter - 按下后退按钮时,将indexStack设置为0

angular - 将数据添加到 Firebase Cloud Firestore 和 Angular

android - 聊天应用程序中的分页库

swift - 如何访问 firestore (swift) 中返回的查询结果?

firebase - 我可以在 Google Analytics 中跟踪我的 Firebase 功能吗?

meteor - Angularfire2: "location.protocol"必须是 http 或 https(一个 Meteor 应用程序)

ios - 查询 Firebase 嵌套数据以检查特定值 - iOS Swift

android - Firebase Android : How to get list inside specific child?

firebase - 刷新小部件时Stream.asFuture()复制数据

flutter - viewportFraction < 1.0 的 PageView 非居中对齐