[英]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.