何时执行对 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 读取数据。
我阅读了很多关于“如何缩小 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 读取数据。