如何遍历从snapshot.val()接收的数据并将其推送到基于键的数组

Gow*_*ham 12 javascript firebase ionic-framework ionic3 angular

我想snapshot.val()基于用户密钥遍历我收到的数据并将它们推送到一个数组中.我尝试在for..in循环的帮助下这样做,

firebase.database().ref('\interests').child("I would like to dine with").on('value', (snapshot) => {
  var data = snapshot.val();
  if(snapshot.exists()){
    for(let key in data){
      console.log("data[key]",data[key]);
      this.intVal.push(data[key]);
      console.log("intVal",this.intVal);
    }
  }
})
Run Code Online (Sandbox Code Playgroud)

但我得到这样的东西,

在此输入图像描述

如果你注意到,我的第一个数组在用户键下包含1个对象,而我的第二个数组在其用户键下包含3个对象.如何在单独的数组中推送每个值?

任何帮助将非常感激!谢谢

Fra*_*len 10

有一种DataSnapshot.forEach()方法正是为此目的:

firebase.database().ref('\interests').child("I would like to dine with").on('value', (snapshot) => {
  snapshot.forEach((child) => {
    console.log(child.key, child.val()); 
    this.intVal.push(child.val());
    console.log("intVal",this.intVal);
  });
  }
})
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以再次迭代每个对象的数据

for(let key in data){
     console.log("data[key]",data[key]);
     for(innerKey in data[key]){
       var obj = {};
       obj[innerKey]=data[key][innerKey];
       this.intVal.push(obj);
     }
     console.log("intVal",this.intVal);
}
Run Code Online (Sandbox Code Playgroud)