当前位置: 首页 > 知识库问答 >
问题:

从firestore Flatter中的子集合获取数据

沈健
2023-03-14

在第一个屏幕截图中,集合用户中有许多文档。每个文档都包含进一步的集合jobPost,该集合包含进一步的文档及其元数据。

我在这里想要的是去收集用户的每个文档和进一步的子收集jobPost并获取所有文档。假设首先它应该转到集合用户中的文档1,在文档1中它应该获取子集合jobPost中的所有文档,然后它应该转到集合用户的第二个文档,然后获取子集合jobPost中的所有文档,等等。

共有3个答案

公良理
2023-03-14

**如果您在第一个集合文档中没有字段,那么它显示斜体,这意味着默认情况下它的删除,否则如果您在第一个集合文档中有字段,那么您可以轻松访问它,所以这是我分享的最好方式**

static Future<List<PostSrc>> getAllFeedPosts()async
  {
    List<PostSrc> allPosts = [];
    var query= await FirebaseFirestore.instance.collection("posts").get();
    for(var userdoc in query.docs)
      {
        QuerySnapshot feed = await FirebaseFirestore.instance.collection("posts")
            .doc(userdoc.id).collection("userPosts").get();
        for (var postDoc in feed.docs ) {
          PostSrc post = PostSrc.fromDoc(postDoc);
          allPosts.add(post);
        }
      }
    return allPosts;
  }
微生毅
2023-03-14

执行查询时,Firestore会返回QuerySnapshot或DocumentSnapshot。

从集合查询返回QuerySnapshot,允许您检查集合。

要访问QuerySnapshot中的文档,请调用docs属性,该属性返回包含DocumentSnapshot类的列表。

但子集合数据不包括在文档快照中,因为Firestore查询很浅。必须使用子集合名称进行新查询才能获取子集合数据。

FirebaseFirestore.instance
    .collection('users')
    .get()
    .then((QuerySnapshot querySnapshot) {
        querySnapshot.docs.forEach((doc) {
            FirebaseFirestore.instance
               .document(doc.id)
               .collection("jobPost")
               .get()
               .then(...);
        });
    });
何星鹏
2023-03-14

您所描述的内容称为集合组查询,它允许您查询具有特定名称的所有集合。与名称所暗示的不同,您实际上可以通过以下方式读取名为jobPost的所有子集合中的所有文档:

FirebaseFirestore.instance.collectionGroup('jobPost').get()...
 类似资料:
  • 我一直在从firestore的子集合中获取数据。我在下面附上我的代码脚本以供参考。 现在我从特定的子集合中获取数据。使用此查询行 其工作正常,并返回数据。 但我想从组文档中获取所有数据。 下面的链接附上了我的数据库图片。 Firestore数据库映像

  • 问题内容: 我想从Firebase Firestore数据库获取数据。我有一个名为user的集合,每个用户都有一些相同类型的对象(My Java自定义对象)的集合。我想在创建我的活动时用这些对象填充ArrayList。 在onCreate()中: 调用以获取项目列表的方法: 问题答案: 该操作返回a ,这意味着它是一个 异步操作 。调用仅启动操作,它不等待操作完成,因此您必须添加成功和失败侦听器。

  • 如何使用Spring FirestoreReactiveRepository从子集合中获取文档? 问题是:如何动态地将子集合名称或路径指定给@Document annotation? 我的firestore系列:(城市是一级系列,公寓是本系列的子系列) 波乔市 POJO公寓是: 从城市收集中获取数据的CityRepository 调用findById(nyc)时,公寓返回空值。我想在城市对象中填充

  • 我正在使用Java开发一个Android应用程序,我使用firestore数据库,我有一个名为用户位置的集合,其结构类似于照片: 分贝 我的问题是,当一个用户改变他的位置或一个新用户进入一个已经存在的位置(其他用户有相同的位置)时,它会创建一个新文档(如在“oran, algerie”中)。当我添加新用户并更新文档时,我想使用,但问题是我无法以正常方式检索根集合的所有文档: 它返回null。我尝试

  • 我一直在研究一个基本的子集和问题。给定一个和,比如说6,和数字[1,2,3,4,5,6]),我必须找到总的组合数s(对于s=6:[1,5],[2,4],[1,2,3])。 我已经能够用蛮力解决这个问题,但还没有找到记忆它的方法,所以我的代码对于足够大的n值是不可行的。 我在这里找到了一个非常有效的记忆算法,但是它只给我组合的数量(所以,对于s=6,组合的数量将是3)——而不是组合本身。是否有可能既

  • 我有用于数据库的Spring Boot App和MongoDB。 在数据库中,我有一个集合packageholiday,其中有一些元素,这是JSON: 我的目标是什么: 正如你们所见,我在集合中有这样的数组: 所以我的问题实际上是创建API,它将从集合中返回具有指定的元素。 例如 的API 例如,对于相同的 的API 我怎样才能做到这一点?这样可能吗?