flutter - Firebase 流获取我在控制台中看不到的数据
问题描述
是的,我想这听起来很奇怪,但也许你们中的一些人有一个想法或至少暗示我可以开始搜索:我正在构建一个应用程序,它使用颤振和云 Firestore 作为服务器。我将我的应用程序与控制台中的集合连接起来,设置了流 - 一切正常,数据快速到达,以我想要的方式显示。现在,几天以来,我一直在尝试建立一个在 Firestore 中创建新对象的新函数。出于测试目的,我还删除了一些已经存在的对象,这使我在控制台中看到的对象变为 3。但是,流获取 11,包括我手动删除的对象和一些已通过我的函数成功创建的对象,但是甚至没有显示在控制台中。似乎他们突然出现了。我仔细检查了所有其他集合,但这些对象无处可藏。而现在我不知道该怎么办。我不能继续这样工作。我将添加一些代码来显示我处理数据。也许有人已经经历过这种奇怪的行为?
Widget _fetchAllGroupsAndBuildList(){
return StreamBuilder<List<Group>>(
stream: DatabaseService().groups,
builder: (context, snapshot){
if(snapshot.hasData)
{
allGroups = snapshot.data;
return _buildAllGroupsList();
}
else if(snapshot.hasError){
print(snapshot.error);
return Container(child: Text("Ups, something went wrong."));
}else{
return Container(child: Text("Ups, something went wrong."));
}
}
);
}
Stream<List<Group>> get groups {
try {
return groupCollection.snapshots()
.map(_groupListFromSnapshot);
} catch (e) {
print("Database, getGroups: " + e.toString());
return null;
}
}
final CollectionReference groupCollection = FirebaseFirestore.instance.collection(
'groups');
解决方案
看来您已启用离线持久性,并且您正在获取数据的缓存版本。
它默认启用,您可以像这样关闭它:
FirebaseFirestore.instance.settings =
Settings(persistenceEnabled: false);
注意:这必须在执行任何 Firestore 交互之前设置。
推荐阅读
- php - 如何在 laravel 8 中使用 json web token (jwt) 进行多重身份验证?
- google-cloud-platform - Google Cloud Vision API 对象检测模型在 Raspberry Pi 上出现总线错误
- gtsummary - 将 tbl_summary 中的频率和百分比拆分为两个单独的列
- python - 合并后python pandas更改顺序和列名
- apache-flink - Apache Flink 在 UI 中显示自定义指标,但普罗米修斯指标报告器没有抓取它们
- laravel - Laravel:如何保存到两个表中,但是,第一个表的 id 将作为外部 id 保存到第二个表中
- c++ - 子聚合的指定初始化器是否需要花括号?
- clickhouse - 获取 ClickHouse 表前 n 行的校验和(cityHash64)
- blazor - 有什么方法可以禁止组件使用“ShouldRender”进行渲染,但允许其子组件在他们认为合适的时候重新渲染?
- r - 用 R 对 A 行的 A 元素和 A 矩阵的 A 列进行排序