减少 Firestore 读取操作

时间:2021-03-10 15:17:58

标签: firebase flutter google-cloud-firestore

今天我在 Play 商店发布了一个应用,它在后端使用了 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';
      });
    }
}

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

至少我在那里读到一篇文档,该文档使用 Firebase 功能“数据包”来大幅降低读取成本,但今年 Firebase 功能仅适用于 Blaze 计划。

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