首页 > 解决方案 > 如何阅读 Firestore 收藏?

问题描述

如何列出firestore中的所有文档

在此处输入图像描述

  FirebaseFirestore.instance
                      .collection('groups')
                      .doc('dialog')
                      .get()
                      .then((DocumentSnapshot documentSnapshot) {
                    if (documentSnapshot.exists) {
                      print('Document data: ${documentSnapshot.data()}');
                    } else {
                      print('Document does not exist on the database');
                    }
                  });

此代码总是返回到 else

标签: firebasefluttergoogle-cloud-firestore

解决方案


文档

删除文档时,Cloud Firestore 不会自动删除其子集合中的文档。您仍然可以通过引用访问子集合文档。例如,/mycoll/mydoc/mysubcoll/mysubdoc即使您删除了位于 的祖先文档,您也可以访问位于 path 的文档/mycoll/mydoc

不存在的祖先文档出现在控制台中,但它们不会出现在查询结果和快照中。


即使一个或多个祖先不存在,一个文档也可以存在。例如,/mycoll/mydoc/mysubcoll/mysubdoc即使祖先文档/mycoll/mydoc不存在,路径处的文档也可以存在。Cloud Firestore 数据查看器显示不存在的祖先文档,如下所示:

  • 在集合的文档列表中,不存在的祖先文档的文档 ID 用斜体表示。
  • 在不存在的祖先文档的信息面板中,数据查看器指出该文档不存在。

由于您的文档名称是斜体,这意味着您要么删除了文档,要么将子集合添加到了一个空文档中,根据您的屏幕截图,您可能已经完成了。因此,要解决此问题,请删除集合group并添加包含数据的文档:

FirebaseFirestore db = FirebaseFirestore.instance;
db.collection("group").doc("dialog").set({"name" : "peter"}).then((value){
  db.collection("group").doc("dialog").collection("Tkxij").add({"test" :"test"});
});

查询也很浅,这意味着如果您正在引用一个文档,那么您将只会获得该文档的数据,您将不会获得子集合中的数据。


推荐阅读