我有一个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充分利用缓存,而不是再次检索所有文档。
答案 0 :(得分:1)
Firestore不支持动态更改活动查询的参数。如果要更改活动查询的过滤器或顺序,则必须停止第一个查询,创建一个新的Query对象,然后执行新查询。