如何迭代firebase数据对象列表

时间:2017-07-11 14:55:01

标签: javascript firebase firebase-realtime-database

firebase data

logging data

 this.fb.getShoppingItems().then(result =>{
   this.exercises=result;
   console.log("this exercise : ");
   console.log(this.exercises);
 })

我应列出firebase数据,但收到如下错误

无法找到'object'类型的不同支持对象'[object Object]'。 NgFor仅支持绑定到Iterables,例如Arrays。

第一张pic是我的firebase数据结构,第二张是console.log结果。

在html中,我应该迭代来自firebase数据的练习(interval_time, name,rest_time,time)

我想我应该重复一遍。对于每个日期节点,如20170710/20170711 ...... 我怎么能这样做?

3 个答案:

答案 0 :(得分:4)

对于JavaScript我会做

firebase.database().ref("profile/user_id").on('value', function(snap){

   snap.forEach(function(childNodes){

      //This loop iterates over children of user_id
      //childNodes.key is key of the children of userid such as (20170710)
      //childNodes.val().name;
      //childNodes.val().time;
      //childNodes.val().rest_time;
      //childNodes.val().interval_time;


  });
});

答案 1 :(得分:1)

我想通了这个方式

this.service.GetBlogs().subscribe(
  response=>{
     console.log(response);


    for(let i in response)
    {
     console.log(response[i].Title);  
    }
  }
);

响应[i]。标题是问题的主要解决方案

答案 2 :(得分:1)

I have a database like this
5bs_es1
   |
   dasdaskj
   |    |
   |   domanda1: "qualcosa..."
   | 
   |
   |
   sfjdk
       |
      domanda1: "fkfgdfh"
       |
      domanda2: "fsdjfhjsdhfj"

我使用此功能来获取所有子值

函数retrieveData(){

let ref = firebase.database().ref().child("5bs_es1");

  ref.on('value', function(snapshot) {
      let snap = snapshot.val();
      for (i in snap){
       console.log("\n" + i);
        for (n in snap[i]){
             console.log(n, snap[i][n])     
      }
  }
  });
}

另一个例子

在配置代码之后,可以很容易地以这种方式进行迭代,例如将数据放入名为“ prosegui”的div中。

<div id="prosegui"></div>

  let database = firebase.database();
  let ref = database.ref("BEP");

  ref.on("value", gotData, errData);

   function gotData(data){
    prosegui.innerHTML = "";
    x = data.val();
    for (n in x){
      prosegui.innerHTML += n + ": " + x[n] + "<br>"
    }
  }
  function errData(err){
    console.log("Error");
    console.log(err);
  }