如何正确更新活动流的Firestore查询快照?

时间:2020-01-16 17:39:44

标签: firebase flutter google-cloud-firestore

我有一个flutter应用程序,该应用程序根据城市,国家/地区等不同条件在Firestore数据库上搜索人员。该应用程序具有用户输入条件,可以选择这些条件,然后单击一下按钮即可应用。单击该按钮后,将调用以下功能:

CollectionReference collectionReference = Firestore.instance.collection("profiles");
void getResults() {
// getQuery is a function that adds 'where' statements
// (e.g., .where("city", isEqualTo: "Paris);
Query query = getQuery(collectionReference, filters); 

Stream<QuerySnapshot> snapshots = query.snapshots();

snapshots.map((docs) => docs.documents).listen((onData){
   myStreamController.add(onData);
   }
}

使用上面的代码,即使现有流包含所有需要的数据,也会创建一个新查询。例如,用户首先首先从法国检索所有人员,然后仅通过更新过滤器从巴黎检索所有人员。

由于现有的信息流已经有来自巴黎的所有人员,是否可以动态更新查询而无需创建新的信息流/查询?

我在这里想要实现的是,我希望Firestore充分利用缓存,而不是再次检索所有文档。

1 个答案:

答案 0 :(得分:1)

Firestore不支持动态更改活动查询的参数。如果要更改活动查询的过滤器或顺序,则必须停止第一个查询,创建一个新的Query对象,然后执行新查询。