首页 > 解决方案 > 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');

标签: flutterdartgoogle-cloud-firestore

解决方案


看来您已启用离线持久性,并且您正在获取数据的缓存版本。

它默认启用,您可以像这样关闭它:

FirebaseFirestore.instance.settings =
    Settings(persistenceEnabled: false);

注意:这必须在执行任何 Firestore 交互之前设置。


推荐阅读