【问题标题】:Reduce Firestore read operations减少 Firestore 读取操作
【发布时间】:2021-06-08 13:39:10
【问题描述】:

今天我在 Play Store 上推出了一个应用,它在后端使用了 Firestore。 我有一个 spark 帐户(免费帐户),从 firestore 读取的内容限制为 50k。 启动 6 小时后,我的阅读图表显示 38k 阅读。

我读到一些关于 firestore 的内容,“Cloud Firestore 版本 16.0.0 添加了控制 DocumentReference.get() 和 Query.get() 是否应该仅从服务器获取数据,仅从缓存中获取数据的能力”。

这是我的代码,它导致从 Firestore 读取操作。有人可以帮我修改我的代码,这样它就不会总是调用 firestore 并从缓存中检索数据。

Future<void> _getUserDetails() async {
    String uid = FirebaseAuth.instance.currentUser.uid;
    DocumentSnapshot doc = await FirebaseFirestore.instance
        .collection('UserDatabase')
        .doc(uid)
        .get();

    if (doc.exists) {
      // this will check availability of document
      setState(() {
        branch = doc.data()['Branch'];
        semester = doc.data()['Semester'];
      });
    } else {
      setState(() {
        branch = 'User is not available';
        semester = 'User is not available';
      });
    }
}

【问题讨论】:

标签: firebase flutter google-cloud-firestore


【解决方案1】:

我正在尝试将所有集合存储在一个文档中,但我现在遇到了同样的问题...我正在尝试将该集合存储到一个数组中以使用这些集合并过滤数据以减少操作读取我的应用程序,因为我有大约 200 种产品,但每个用户正在执行 1400 次或更多读取...

至少我在那边读到了一篇使用 firebase 函数“Data Bundle”来大幅降低读取成本的文档,但是今年的 firebase 函数仅适用于 Blaze 计划。

文章: https://dev.to/moga/decrease-read-costs-of-firestore-using-firestore-data-bundles-30e9

【讨论】:

    【解决方案2】:

    我也考虑了一段时间。在我的应用程序中,我有一个启动画面,我打算在启动画面中获取我的用户详细信息。之后,数据将被传递到另一个需要某些数据的屏幕。我认为这种方法将节省 Firestore 读取。如果您也对这个问题有任何想法,请告诉我!

    【讨论】:

    • 我使用共享首选项从 Firestore 中保存我的数据。当任何用户进入主屏幕后注册屏幕/登录屏幕时,我使用共享首选项将他的详细信息从 firestore 存储在缓存中。每次用户第一次进入我的主屏幕时都会发生这种情况,因此一旦用户详细信息存储在缓存中,它将不再调用 firestore 进行读取操作,并且每当需要用户数据时,出于某种原因,我从缓存内存中提取它而不是调用它从火库。此外,如果您允许更新,请确保您更新共享首选项以及 Firestore 中的更新。
    猜你喜欢
    • 2021-04-04
    • 2021-11-23
    • 2019-10-22
    • 2021-05-22
    • 2019-02-01
    • 2020-03-31
    • 2019-12-29
    • 1970-01-01
    • 2020-06-07
    相关资源
    最近更新 更多