如何在 Flutter 中只读取 Firestore 数据库中更改的文档?

问题描述 投票:0回答:1

这主要是一个读取成本问题。我的应用程序只需要在应用程序启动时从

Firestore
检索数据,因此我不确定使用侦听器是否是获取更改文档的最佳方式。我的数据库是一份餐食列表,应该有 50 份左右的餐食(文档)。如何检查应用程序启动时的文档是否有任何更改,同时最大限度地减少读取(实际上,如果不对数据库进行任何更改,则不应有任何读取)

这是我目前的代码:

  QuerySnapshot querySnapshot =
      await firestoreInstance.collection('meals').get();
  
  List<Map> collectionData = [];
  for (QueryDocumentSnapshot doc in querySnapshot.docs) {
    collectionData.add(doc.data() as Map);
  }

  return collectionData;

在 runApp() 之前在 main 方法上调用

flutter firebase dart google-cloud-firestore
1个回答
0
投票

Firestore 不会对文档是否已更改进行任何内部记录。它当然不知道上次某些代码查询集合的任何信息。

如果您想知道自上次查询以来已更改的文档,您需要做两件事:

  1. 记录每个文档的上次更新时间,通常带有服务器时间戳。文档的每次更新都应该更改此时间戳。
  2. 记住应用程序中上次查询集合的时间,并使用该时间来过滤查询,仅查找自该时间以来更新的文档。
© www.soinside.com 2019 - 2024. All rights reserved.