2016-03-06 69 views
0

我正在使用firebase收集数据,并且我想创建一个临时网页以在测试时快速查看json数据库(并共享它)。 数据按日期字符串分组,然后使用随机密钥和数据进行分组。例如:在网页上显示完整的firebase json数据

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

为了测试出我使用JavaScript的HTML如下事件数据:

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事件是不确定的

有谁知道我怎么可以抢事件字符串?

+0

测试? https://chrome.google.com/webstore/detail/vulcan-by-firebase/oippbnlmebalopjbkemajgfbglcjhnbl?hl=zh-CN –

回答

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级别的位置。

+0

谢谢!就是这样! – Richie

+0

你也知道我为什么得到[对象对象],而不是我添加行document.write(events [key])时的细节; – Richie

+0

因为它是一个对象;具有多个属性的东西。要完整地查看它'document.write(JSON.stringify(events [key]))'。但总的来说:请不要使用'document.write()'。只要'console.log()'一样,并在浏览器的开发工具/ JavaScript conosole中查看。 –