2016-11-08 49 views
0

我使用的離子2.火力地堡得到child_added環路

這是我的火力地堡結構 enter image description here

我想java和數學的孩子在這個火力點照片他們的孩子都是0,1到每一個。

我做類似的東西

public getCourse(departmentId:any):any{ 
    var semesterRef = firebase.database().ref('Courses/'+departmentId+'/SemA') 
    semesterRef.on('child_added', function(courseSnapshot) { 
    console.log(courseSnapshot.key); 
}); 

,但它給了我只是在Java和數學的名字,而不是他們的孩子。我如何在循環中運行並獲取它,並返回數組。

這是我的代碼 enter image description here

+0

對於將來的問題,請不要張貼JSON和代碼的圖片。而是張貼實際的文字。對於JSON,您可以通過單擊Firebase數據庫控制檯中的導出按鈕輕鬆獲取。將JSON和代碼作爲文本使其成爲可搜索的,使我們能夠輕鬆地使用它來測試您的實際數據/代碼,並在我們的答案中使用它,並且通常只是一件好事。 –

回答

3

您可以使用快照的forEach方法循環密鑰的孩子:

public getCourse(departmentId:any):any{ 
    var semesterRef = firebase.database().ref('Courses/'+departmentId+'/SemA') 
    semesterRef.on('child_added', function(courseSnapshot) { 
    console.log(courseSnapshot.key); 
    courseSnapshot.forEach(function(childSnapshot):boolean{ 
     console.log(childSnapshot.key); 
     // ... etc. 
     return false; // to appease TypeScript 
    }); 
    }); 
} 

的火力地堡API不會返回數組,因爲它轉換數組對象與派生密鑰從數組索引,但你可以枚舉子和重新構建一個數組,如果這是你所需要的。

+0

感謝您的快速回復。它顯示我錯誤在這裏「courseSnapshot.forEach(function(childSnapshot){ 」它說類型'(childSnapshot:DataSnapshot)=> void'的參數是不可分配給類型'(a:DataSnapshot)=>布爾'類型的參數。 類型'void'不能指定爲類型'boolean' –

+0

是的,TypeScript對於未指定返回值感到不滿意,傳遞給'forEach'的函數可以返回'true'來短路迭代,只需返回'false '以安撫TypeScript。 – cartant

+0

嘿,這正是我想要的,但是我堅持因爲我在提供程序中,並不知道如何將它傳遞到我的課程頁面中,我編輯我的帖子並添加了代碼。 –