Firebase获取子元素添加到循环中
我用的是离子2 这是我的Firebase结构 我想在这张firebase照片中得到java和math的孩子,他们的孩子是0,1比1 我做过类似的事情Firebase获取子元素添加到循环中,firebase,ionic-framework,firebase-realtime-database,ionic2,Firebase,Ionic Framework,Firebase Realtime Database,Ionic2,我用的是离子2 这是我的Firebase结构 我想在这张firebase照片中得到java和math的孩子,他们的孩子是0,1比1 我做过类似的事情 public getCourse(departmentId:any):any{ var semesterRef = firebase.database().ref('Courses/'+departmentId+'/SemA') semesterRef.on('child_added', function(courseSnapshot
public getCourse(departmentId:any):any{
var semesterRef = firebase.database().ref('Courses/'+departmentId+'/SemA')
semesterRef.on('child_added', function(courseSnapshot) {
console.log(courseSnapshot.key);
});
但它给我的只是Java和math的名字,而不是他们的孩子。如何在循环中运行并获取它,以及如何以数组的形式返回
这是我的密码
您可以使用快照的
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
});
});
}
Firebase API不会返回数组,因为它会将数组转换为具有从数组索引派生的键的对象,但如果需要,您可以枚举子项并重新构建数组。您可以使用快照的
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
});
});
}
Firebase API不会返回数组,因为它会将数组转换为具有从数组索引派生的键的对象,但如果需要,您可以枚举子级并重新构建数组。感谢您的快速响应。它在这里向我显示了错误“courseSnapshot.forEach(function(childSnapshot){”它说类型的参数(childSnapshot:DataSnapshot)=>void”不能分配给类型的参数(a:DataSnapshot)=>boolean.类型“void”不能分配给类型“boolean”。是的,TypeScript对没有指定返回值感到不高兴。传递给
forEach
的函数可以返回true
来缩短迭代。只需返回false
来安抚TypeScript。嘿,这正是我想要的。但我坚持了bec因为我在provider中做了,不知道如何将其传递到我的课程页面。我编辑了我的帖子并添加了代码。感谢您的快速响应。这里显示了错误“courseSnapshot.forEach(function(childSnapshot){”它说类型的参数(childSnapshot:DataSnapshot)=>void”不能分配给类型的参数(a:DataSnapshot)=>boolean.类型“void”不能分配给类型“boolean”。是的,TypeScript对没有指定返回值感到不高兴。传递给forEach
的函数可以返回true
来缩短迭代。只需返回false
来安抚TypeScript。嘿,这正是我想要的。但我坚持了bec因为我在provider中做了,不知道如何将其传递到我的课程页面。我编辑了我的帖子并添加了代码。对于未来的问题,请不要发布JSON和代码的图片。而是发布实际文本。对于JSON,您可以通过单击Firebase数据库控制台中的导出按钮轻松获得。将JSON和代码作为文本生成它是可搜索的,允许我们轻松使用它来测试您的实际数据/代码,并在我们的答案中使用它,这通常是一件好事。对于未来的问题,请不要发布JSON和代码的图片。而是发布实际文本。对于JSON,您可以通过单击Firebase数据库控制台中的导出按钮轻松获得。将JSON和代码作为文本使其具有可搜索性,允许我们轻松地使用它来测试您的实际数据/代码,并在我们的答案中使用它,这通常是一件好事。