2017-09-18 292 views
1

创建的JSON检索数据这是我的数据库结构火力地堡数据检索:我无法从火力地堡数据库

{ 
    "main" : { 
    "fake data1" : { 
     "abc" : "1001", 
     "high" : "100", 
     "low" : "150", 
     "mid" : "200", 
     "name" : "fake data1" 
    }, 
    "fake data2" : { 
     "abc" : "1023", 
     "high" : "1020", 
     "low" : "1020", 
     "mid" : "1501", 
     "name" : "fake data2" 
    }, 
    "fake data3" : { 
     "abc" : "1001", 
     "high" : "100", 
     "low" : "150", 
     "mid" : "200", 
     "name" : "fake data3" 
    }, 
    "fake data4" : { 
     "abc" : "1023", 
     "high" : "1020", 
     "low" : "1020", 
     "mid" : "1501", 
     "name" : "fake data4" 
    }, 
    "fake data5" : { 
     "abc" : "1001", 
     "high" : "100", 
     "low" : "150", 
     "mid" : "200", 
     "name" : "fake data5" 
    }, 
    "fake data6" : { 
     "abc" : "1023", 
     "high" : "1020", 
     "low" : "1020", 
     "mid" : "1501", 
     "name" : "fake data6" 
    } 
    } 
} 

我想从以上检索所有的名字,但我不能去做吧。

我用下面的查询尝试:

var datafire = firebase.database().ref(); 
    var namedb = datafire.child('main') 
    var query = namedb.orderByChild('name') 
    query.on("value", function(datasnap) { 
         var data = (datasnap.val()); 
         console.log(data.name); 
+0

我认为你缺少'假data1','假data2'在查询 – 3stud1ant3

回答

1

当您执行对火力地堡数据库的查询,也将有可能是多个结果。所以快照包含了这些结果的列表。即使只有一个结果,快照也会包含一个结果列表。

您的代码将需要通过在这些项目使用Snapshot.forEach()循环来处理快照中包含多个项目的事实:

var datafire =firebase.database().ref(); 
var namedb = datafire.child('main') 
var query = namedb.orderByChild('name') 
query.on("value",function(datasnap){ 
    datasnap.forEach(function(child) { 
    var data=child.val(); 
    console.log(child.key, data.name); 
    }); 
});