为什么Firebase orderByChild()返回undefined?

时间:2014-11-30 05:02:33

标签: firebase

我有一个带有简单数据的Firebase:

Firebase screenshot

有一个“玩家”列表,每个玩家都有一个自生成的GUID,每个玩家都包含一个值“Count”。根据我的要求(例如使用once()),我希望能够查询按Count值排序的玩家。所以,基于Firebase documentation,我使用的是orderByChild(),但是当我运行代码时,它总是以未定义的形式出现:

var fb = new Firebase("https://morewhitepixels.firebaseio.com/");
fb.child("players").orderByChild("Count").once("value",function(data) {
  // do something with data
});

但是这段代码总是返回指向第二行代码的Uncaught TypeError: undefined is not a function

我错过了什么?

1 个答案:

答案 0 :(得分:6)

我不确定你在回调中做了什么,但这很好用:

fb.child("players").orderByChild("Count").once("value",function(data) { 
    console.log(data.val()); 
});

请记住data参数不是实际数据。这是DataSnapshot,您必须首先致电val()

你可能想要遍历孩子,你可以这样做:

fb.child("players").orderByChild("Count").once("value",function(data) { 
    data.forEach(function(snapshot) {
        console.log(snapshot.val().Count); 
    });
});

以上示例按您所要求的顺序打印出所有孩子:

120320
181425
185227
202488
202488
202488
202488
245197
245197
487320

或者,您可以改为使用on('child_added'

fb.child("players").orderByChild("Count").on("child_added",function(snapshot) { 
    console.log(snapshot.val().Count); 
});