flutter:检索Firebase集合中存在的多个文档ID

时间:2020-04-21 13:16:42

标签: firebase flutter

我想获取集合中每个文档的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

这是我的消防站的屏幕截图

enter image description here

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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),
                  );
          },
        )

这是我的代码的一部分,但是StreamBuilder也对您来说很相似。