Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase获取子元素添加到循环中_Firebase_Ionic Framework_Firebase Realtime Database_Ionic2 - Fatal编程技术网

Firebase获取子元素添加到循环中

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

我用的是离子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) {
  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和代码作为文本使其具有可搜索性,允许我们轻松地使用它来测试您的实际数据/代码,并在我们的答案中使用它,这通常是一件好事。