从Firebase读取数据到Javascript

时间:2018-08-16 17:51:38

标签: javascript firebase

当我将Javascript键对象放到控制台日志中时,我试图列出所有数据,但其中包含所有信息,但是当我想使用InnerHTML时,我只会得到第一个对象。

function gotData(data){

  var scores = data.val();
  var keys = Object.keys(scores);

  for (var i = 0; i < keys.length; i++) {
    var k = keys[i];
    var pro = scores[k].result;
    var doc = document.getElementById("result").innerHTML = pro;
  }

}

在这种情况下,它只会为我提供Firebase第一个元素的结果

谢谢

3 个答案:

答案 0 :(得分:0)

如果我了解您的预期结果,请检查一下stackblitz-demo,这看起来好像是您遗漏的一件小事。

onClick() {

  const scores = [{
    'one': 1
  }, {
    'two': 2
  }, {
    'three': 3
  }, {
    'four': 4
  }, {
    'five': 5
  }];
  var keys = Object.keys(scores);
  for (let i = 0; i < keys.length; i++) {
    const k = keys[i];
    const pro = scores[k].result;
    // here the += is what i think you're missing.
    const doc = document.getElementById("example").innerHTML += k;
  }
}

答案 1 :(得分:0)

问题在于您每次都覆盖innerHTML。相反,您需要追加到现有的innerHTML。将最后一行更改为...

const doc = document.getElementById("example").appendChild(document.createTextNode(k))

appendChild也比设置innerHTML

快得多

答案 2 :(得分:0)

.hasOwnProperty是仅查看存储值的方法。这有帮助吗?

d = snap.val();
for (var k in d) {
  if (d.hasOwnProperty(k)) {
    if (isObject(d[k]){
      console.log(k, d[k]);
    } else {
      console.log (k);
    }
  }
}
    function isObject(obj) {
        return obj === Object(obj);
    }