【问题标题】:showing complete firebase json data on webpage在网页上显示完整的 firebase json 数据
【发布时间】:2016-03-06 08:32:04
【问题描述】:

我正在使用 firebase 收集数据,我想创建一个临时网页,以便在测试时快速查看 json 数据库(并共享它)。 数据按日期字符串分组,然后是随机键,然后是数据。例如:

{
  "20160304" : {
    "-KC-aOwSWpt4dlYmjJE4" : {
      "coordinates" : "-37.7811465912404, 145.005993055861",
      "event" : "Test event",
      "time" : "2016-03-04 07:48:43 +0000"
    }, etc...

为了测试显示事件数据,我在 html 中使用了 javascript,如下所示:

var myFirebaseRef = new Firebase("https://xxxx.firebaseio.com/");

myFirebaseRef.orderByKey().on("value", function(snapshot) {
  snapshot.forEach(function(snapshot) {
    console.log("The " + snapshot.key() + " event is " + snapshot.val().event);
  });
});

但它只会返回 20160304 事件未定义 20160305事件未定义

有人知道我如何获取事件字符串吗?

【问题讨论】:

标签: javascript html json firebase


【解决方案1】:

您正在尝试跳过 JSON 中的一个级别:

<date>
    <pushid>
        coordinates: ...
        event: ...
        time: ...

由于您在根目录上侦听此结构,因此您的 snapshot.forEach() 会遍历日期。这意味着您仍然需要循环推送 id:

var myFirebaseRef = new Firebase("https://xxxx.firebaseio.com/");

myFirebaseRef.orderByKey().on("value", function(snapshot) {
  snapshot.forEach(function(snapshot) {
    var events = snapshot.val();
    Object.keys(events).forEach(function(key) {
      console.log(events[key]);
    });
  });
});

另一方面,如果您只想每天处理一个事件,则应将它们存储在其中,而不要在其中存储 pushid 级别。

【讨论】:

  • 您是否也知道为什么我在添加行 document.write(events[key]); 时得到 [object Object] 而不是详细信息;
  • 因为它是一个对象;具有多个属性的事物。要完整查看它document.write(JSON.stringify(events[key]))。但总的来说:请不要使用document.write()。只需console.log() 相同,然后在浏览器的开发人员工具/JavaScript 控制台中查看它。
  • 谢谢坦率。最后一个问题,如果可以的话,为什么我一般不使用document.write()?即使是为了测试?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-14
  • 1970-01-01
  • 2011-04-14
  • 1970-01-01
  • 2013-04-05
相关资源
最近更新 更多