【问题标题】:How to iterate over firebase data object to list如何遍历firebase数据对象以列出
【发布时间】:2017-07-11 14:55:01
【问题描述】:

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

我应该列出 firebase 数据,但出现如下错误

找不到“object”类型的不同支持对象“[object Object]”。 NgFor 只支持绑定到 Arrays 等 Iterables。

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

在 html 中,我应该遍历来自 firebase 数据的练习(interval_time, 姓名、休息时间、时间)

我认为我应该迭代 .对于每个日期节点,例如 20170710/20170711 ... 我该怎么做?

【问题讨论】:

    标签: javascript firebase firebase-realtime-database


    【解决方案1】:

    对于 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;
    
    
      });
    });
    

    【讨论】:

    • 我正在尝试这个,但 ChildNodes.key 没有返回密钥
    • 返回什么?
    • 某种函数,例如 - fn()
    • 这就是我获取密钥的方法 - var arr = data.val(); var arr2 = Object.keys(arr);
    【解决方案2】:

    我是这样想的

    this.service.GetBlogs().subscribe(
      response=>{
         console.log(response);
    
    
        for(let i in response)
        {
         console.log(response[i].Title);  
        }
      }
    );
    

    response[i].Title是问题的主要解决方案

    【讨论】:

      【解决方案3】:
      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);
        }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多