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

Flatter Firebase:如何迭代子集合?

陶修洁
2023-03-14

我正在使用Flutter和Cloud FiRecovery构建一个Instagram克隆,我正在尝试像这样构建数据库:

收藏(“时间线”)

实际上看起来像这样:

/TimeLine/itemID/comments/commentItemID/

阅读项目标题,例如,很容易。我可以渲染一个Listview.builder并使用:

snapshot.data.documents.elementAt(i)['itemTitle']

但是我如何遍历每个项目的评论子集合?我尝试了嵌套的Listview和this,但我无法访问elementAt(index)的子集合:

snapshot.data.documents               
        .elementAt(i).collection('comments').elementAt(c)['commentAuthor']

或者有没有更好的方法来构建这个?

FiRecovery设置的屏幕截图

共有1个答案

乜嘉悦
2023-03-14

以下代码用于检索和显示快照或检索子集合:

为了查看数据,我们必须检索该集合的所有文档或特定文档。对于检索特定文档,我们必须指定文档id。

void getData() {
  databaseReference
      .collection("comments")
      .getDocuments()
      .then((QuerySnapshot snapshot) {
    snapshot.documents.forEach((f) => print('${f.data}}'));
  });
}

检索子集合

firestoreInstance.collection("comments").get().then((querySnapshot) {
  querySnapshot.docs.forEach((result) {
    firestoreInstance
        .collection("comments")
        .doc(result.id)
        .collection("SUBCOLLECTION")
        .get()
        .then((querySnapshot) {
      querySnapshot.docs.forEach((result) {
        print(result.data());
      });
    });
  });
});
}

请也看看下面的教程1。

 类似资料:
  • 我有一个表示为整数的按位掩码。掩码和整数限制为32位整数。 有比这更快的解决方案吗? 我的后续问题是,如果我想限制子集的大小(即,固定的设置比特数),有没有一个简单的方法做到这一点?

  • 问题内容: 假设我有一个整数集,并且我想增加集合中的每个整数。我该怎么做? 我可以在迭代时添加和删除集合中的元素吗? 在迭代原始集合时,是否需要创建一个新集合以将元素“复制并修改”到其中? 编辑:如果集合中的元素是不可变的呢? 问题答案: 您可以在迭代期间使用Iterator对象安全地从集合中删除;尝试在迭代时通过其API修改集合会破坏迭代器。Set类通过getIterator()提供一个迭代器。

  • 如果没有以下内容,我如何迭代/?

  • 是否可以在java中并行地迭代一个集合。我正在中寻找类似C#的东西-命名空间

  • 在我的应用程序中,我需要数组1的给定大小k的所有子集。。n 这可以使用递归方法轻松完成,并存储沿途找到的所有子集。然而,我不希望我的应用程序使用指数级的内存量[O(n^k)]。 因此,我想编写一个实现(Java)的类来迭代所述子集。 所以我可以如下使用它: 显然,我们需要存储最后返回的当前子集,它被初始化为1... k。但是如何从这个当前子集计算下一个子集呢?

  • 有没有一种方法我可以用某种方式迭代光标我可以暂停它,然后再继续?MongodbCursor保存最后访问的项目?我只知道foreach迭代,但是否有一些像这样的迭代? 如果有类似的东西存在,我可以保存查询的最后一个项目。提前致谢