何时执行对 firebase firestore 的读取

When exactly is a read on firebase firestore performed

我阅读了很多关于“如何缩小 firebase 读取操作”的内容,现在我正在尝试实现一个缓存数据并仅更新修改后的数据的函数。

(项目是用 Dart 和 Flutter 制作的) 为此,假设我有一个包含 10 个文档的子集合,每个文档至少包含字段“lastModified”。

这是我的例子:

GetOptions _CACHE = GetOptions(source: Source.cache);  
GetOptions _SERVER = GetOptions(source: Source.server);
DateTime lastModified;

FirebaseFirestore firestore = FirebaseFirestore.instance;
    CollectionReference collectionReference = firestore.collection("collection").doc("document").collection("collection");
    Query lastModifiedQuery = collectionReference.orderBy("lastModified", descending: true);

    QuerySnapshot snapshot = await collectionReference.get(_CACHE);

    if (snapshot.docs.isEmpty)
    {
      QuerySnapshot querySnapshot = await lastModifiedQuery.limit(1).get(_SERVER);

      if (querySnapshot.size > 0)
      {
        lastModified = querySnapshot.docs.first.get("lastModified");
      } else {
        lastModified = DateTime.now();
      }
    } else {

      Query queryRefresh = collectionReference.orderBy("lastModified", descending: true).where("lastModified", isGreaterThan: lastModified);
   }

现在我不确定不同的电话。 我知道如果我调用“.get()”,我会在每个文档上触发读取操作。 但是仅仅创建一个查询是否也 运行 是一个数据库操作,并且在我的例子中,更新缓存? 还是我必须 运行 在查询中输入“.get()”然后我就完成了?

创建查询还没有访问数据库。只有在您调用 get() 或收听 onSnapshot 后,才会从 Firestore 读取数据。