簡體   English   中英

Firebase Firestore獲取集合中每個文檔的子集合

[英]Firebase Firestore Get Subcollections for each document in a collection

我的數據庫有一個節的集合,每個節都包含一個子節的子集合。

這是我需要創建的數組:

[
  {
    "sectiontitle": "first section",
    "sectiontype": "1",
    "__id__": "6jwwukHmOs1743yC13vH",
    "subsections": [
      {
        "desc": "blah blah blah",
        "__id__": "KTq4MJTEMbDfR33RoX9J"
      },
      {
        "desc": "blah blah blah",
        "__id__": "ASFSADFSAFSADFSADFFS"
      }
    ]
  },
  {
    "sectiontitle": "second section",
    "sectiontype": "1",
    "__id__": "5jwwDHEDOs1743yC13vG",
    "subsections": [
      {
        "desc": "blah blah blah",
        "__id__": "DFG4MJTEMbDfR33DDDDD"
      },
      {
        "desc": "blah blah blah",
        "__id__": "ASDFGHFSAFSADFSHJFRD"
      }
    ]
  }
]

我的代碼是:

    // get sections
    firebase.firestore().collection("sections").get().then((sections) => {
      var myarray = [];
      var i = 0;
      sections.forEach((section) => {
        var sectiondata = section.data();
        sectiondata.__id__ = section.id
        sectiondata.subsections = [];
        myarray.push(sectiondata);

        //get subsections
        firebase.firestore().collection("sections").doc(sectiondata.__id__).collection("subsections").get().then((subsections) => {
          subsections.forEach((subsection) => {
            var subsectiondata = subsection.data();
            subsectiondata.__id__ = subsection.id;
            myarray.push('sections.' + i + '.subsections', subsectiondata); // problem is i index is not correct
          });
        });

        i++;

      });
    });

這個問題是i索引不正確,因為已讀取的節已經完成,並且在開始讀取子節時已遍歷foreach。 我不熟悉Javascript承諾,所以我希望有人可以幫助我解決該問題?

基本上,為每個部分添加子部分。

謝謝。

請嘗試一下,讓我知道是否正常工作。 請注意,SubjectBehavior是從RxJs庫導入的,我的代碼是打字稿代碼,正如我認為您使用打字稿一樣。

   sb = new SubjectBehavior<[]>();
    var basicArray = [];
           firebase.firestore().collection("sections").get().then((sections) => {
              var myarray = [];
              basicArray = [];
              var count = 0;

              sections.forEach((section) => {
                var sectiondata = section.data();
                sectiondata.__id__ = section.id
                sectiondata.subsections = [];
                myarray.push(sectiondata);
            count++;
            if( count === sections.length()) {
                sb.next(myarray); //or .emit(), i dont remember
            }
                //get subsections

            });

        sb.subscribe( (myArrayElements: any[]) => {
            myArrayElement.foreach( (element) => {
    firebase.firestore().collection("sections").doc(element.__id__).collection("subsections").get().then((subsections) => {
                      subsections.forEach((subsection) => {
                        var subsectiondata = subsection.data();
                        subsectiondata.__id__ = subsection.id;
                        basicArray.push('here element data (sectionData)' + '' + '.subsections', subsectiondata); 
                      });
                    });

                  });
    });
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM