firebase - 如何正确更新活动流的 Firestore 查询快照?
问题描述
我有一个颤动的应用程序,它根据不同的标准(如城市、国家、地区等)在 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 利用缓存而不是再次检索所有文档。
解决方案
Firestore 不支持动态更改活动查询的参数。如果要更改活动查询的过滤器或排序,则必须停止第一个查询,创建一个新的 Query 对象,然后执行新查询。
推荐阅读
- reactjs - 我需要从 Class 组件转换为功能此代码
- flutter - 确保 transform.translate 不会离开容器
- python - 更新 pip 后,我在尝试安装 speedtest-cli 时收到 SyntaxError: invalid syntax
- python - 我如何阅读里面的文字
在蟒蛇?
- azure-active-directory - 如何在不需要管理员同意的情况下在两个应用程序之间授予 Azure AD 应用程序权限?
- html - 在 ASP.NET MVC Razor 视图中动态设置 HTML Div 元素的 ID
- laravel - 您好我使用 laravel 和 Vue js 我作者项目它工作正常但是这个错误?
- python - 我的输出不断重复自己?(Python)
- java - 如何在 macOS 的停靠栏顶部显示 Java Swing 窗口?
- typescript - 每次在输入子项上键入时,键盘都会不断关闭