【问题标题】:flutter: Retrieving multiple document id present inside a collection of firebase颤振:检索firebase集合中存在的多个文档ID
【发布时间】:2020-08-04 06:09:38
【问题描述】:

我想获取集合中每个文档的 ID。我尝试了此代码,但它无限次返回单个文档 ID。您能否提出更正或替代方案

getrequest() {
    linkref.document(uuid).
    collection("Requests").getDocuments().then((value) async{

      value.documents.forEach((doc) {
        user.add(doc.documentID);
      });},);
  return ListView.builder(
      itemBuilder: (BuildContext cntxt, int index){
        return Text(user[index]);
      });
}

文档中有一个集合,在这个集合中我还有其他文档。我想检索所有文档 id

这是我的firestore的截图

【问题讨论】:

  • 请为您的 Firestore 添加屏幕截图
  • @PeterHaddad 请看一下
  • 请求中只有一个文档
  • 以后会有多个

标签: firebase flutter


【解决方案1】:

目前,您在 Firestore 中只有一个文档。我建议您添加多个文档,然后测试此命令。您可以使用 snapshot 来获取 Sandeep 建议的多个文档,使用

  Firestore.instance
            .collection('Links')
            .document(docID)
            .collection('Requests')
            .snapshots();

您可以通过查询集合中的文档,用一个请求检索多个文档。默认情况下,Cloud Firestore 按文档 ID 升序检索满足查询的所有文档,但您可以对返回的数据进行排序和限制。使用where() 有条件地检索文档,然后使用get

更多可以在文档here中找到

要使用 ListView 构建器,我建议使用类似这样的 StreamBuilder:

        StreamBuilder<DocumentSnapshot>(
          stream: Firestore()
              .collection('homepage')
              .document(widget.user.uid)
              .collection('h')
              .document(todaysDate())
              .snapshots(),
          builder: (context, snapshot) {
            if (snapshot.data != null) {

              snapshot.data.data.forEach((index, individualDetail) {
                cardDetails[index] = individualDetail;
              });
            } 
            return cardDetails == null
                ? CircularProgressIndicator()
                : ListView.builder(
                    itemBuilder: (context, index) {
                      return HomepageCards(
                        user: widget.user,
                        cardDetails:
                            cardDetails[cardDetails.keys.toList()[index]],
                      );
                    },
                    itemCount: (cardDetailKeys == null
                        ? 0
                        : cardDetailKeys.length),
                  );
          },
        )

这是我的代码中的一个 sn-p,但 StreamBuilder 对你来说也很相似。

【讨论】:

    【解决方案2】:
      Firestore.instance
                .collection('Links')
                .document(docID)
                .collection('Requests')
                .snapshots();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-31
      • 2021-10-09
      • 2021-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      相关资源
      最近更新 更多