首页 > 解决方案 > Firebase Firestore 获取 Flutter 中的所有文档为空

问题描述

我想从集合中获取所有子文档和集合。

数据库结构:

代码片段:

_firestore.collection("messages").get().then((querySnapshot) => {getdata(querySnapshot)});

querySnapshot.docs.length始终为零。如何尝试从集合中获取所有数据?

标签: firebasefluttergoogle-cloud-firestore

解决方案


嗯,您当前的文档查询是什么样的?

您的文档的 id 有点令人困惑,但我认为标准查询应该可以工作。

注意:使用顺序键/数字作为文档和集合 ID 是危险的,并且会在以后给您带来很多问题。如果您自己没有生成唯一 ID,请让 Firestore 为您完成。Firebase - 最佳做法

例如

要收听messages/2/1集合的变化:

 final snapshotStream = FirebaseFirestore.instance
        .collection('messages/2/1')
        .snapshots()
        .asBroadcastStream();

这将返回一个流,其中包含将“实时”更新的每个文档的快照。这.asBroadCastStream()确保您可以向该流注册多个侦听器。(看起来你正在使用它作为某种聊天功能?)

一点额外的,一种访问流中所有文档的方法:

 await for (final streamSnapshot in snapshotStream) {
          final documentsList = streamSnapshot.docs;
          /// Do something with documentsList
 }

告诉我进展如何,祝你好运!:)


推荐阅读