迭代并从数据库

时间:2017-07-01 13:36:13

标签: javascript jquery firebase firebase-realtime-database

我的数据库看起来像这样

enter image description here

Rockport和Palmont是城市,他们有位置,位置很多,但我只是举个例子 - 所以我想找回位置名称和人口

我想出了这个有效的代码,并向我展示了每个城市的“Location1”

$("#button").click(function() {
      var dbref = firebase.database().ref();
    dbref.once("value")
      .then(function(snapshot) {
        snapshot.forEach(function(datasnap) {
          var Location = datasnap.child("Location1/name").val();
          var Population = datasnap.child("Location1/population").val();             
          $( "#table" ).append( "<tr><td>" + Location + "</td><td>" + Population + "</td></tr>" );    
        })
      })
  });

我的html表的输出是

SILVERTON   197
ROSEWOOD    213

它没有显示“Location2”的名字和人口,因为我没有明显提到它,在第6行和第7行我可以这样做

var Location = datasnap.child("Location2/name").val();
var Population = datasnap.child("Location2/population").val();  

但就像我说的那样,地点可以达到'20',我需要写下所有地点?

任何结果如何?

1 个答案:

答案 0 :(得分:1)

您需要遍历每个城市的子数据。 Firebase的Snapshot有一个方法forEach(),可以轻松实现。您已经使用它来遍历城市,但您也应该使用它来遍历每个城市的位置:

$("#button").click(function() {
  var dbref = firebase.database().ref();
  dbref.once("value").then(function(snapshot) {
    snapshot.forEach(function(citysnap) {
      citysnap.forEach(function(locationsnap) {
        var Location = locationsnap.child("name").val();
        var Population = locationsnap.child("population").val();             
        $( "#table" ).append( "<tr><td>" + Location + "</td><td>" + Population + "</td></tr>" );    
      });
    })
  })
});