2016-11-08 51 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

嘿,这正是我想要的,但是我坚持因为我在提供程序中,并不知道如何将它传递到我的课程页面中,我编辑我的帖子并添加了代码。 –