Firebase查询未返回数据库中的任何结果

时间:2014-10-19 16:15:26

标签: firebase

我正在尝试在Firebase中进行简单搜索,以便从我的Firebase数据中返回数据,但不会返回任何内容。

JSON STRUCTURE

{
    "-JZQzhqTI6NUQMfgHwQc" : {
        "Divisions" : {
            "-JZLh2UYKi5IvphLtX4I" : true,
            "-JZLh2Uc5HhffF1ki4H1" : true
        },
        "SportTypes" : {
            "-JZLOh7KtM78I5wAL6Ua" : true
        },
        "name" : "winnipegjets",
        "nickname" : "Jets",
        "teamname" : "Winnipeg Jets"
    }
}

我的Firebase代码进行搜索如下

   new Firebase("https://sizzling-fire-6197.firebaseio.com/teams")
            .startAt('Winnipeg Jets')
            .endAt('Winnipeg Jets')
            .once('value', function(snap) {
                console.log('matching team is', snap.val())
            });

但是一旦代码执行,它就会返回null。还有一种搜索特定字段的方法。

2 个答案:

答案 0 :(得分:2)

看起来你有一组团队,第一个团队在一个名为-JZQzhqTI6NUQMfgHwQc的节点中(可能是通过调用push生成的)。它的属性name的值为winnipegjets,属性teamname的值为Winnipeg Jets

Firebase query you can filter nodes in two ways中:

  • 以他们的名字命名
  • 按他们的优先顺序

您的节点名为-JZQzhqTI6NUQMfgHwQc并且具有优先级(未在您发布的JSON中显示)。这些是您可以过滤的唯一两个值。

如果您尚未使用优先级,可以考虑将nameteamname设置为优先级(查看setPriority的文档)并对其进行过滤

您似乎已经尝试使name属性与众不同。在这种情况下,您可以考虑按如下方式创建结构:

{
    "winnipegjets" : {
        "Divisions" : {
            "-JZLh2UYKi5IvphLtX4I" : true,
            "-JZLh2Uc5HhffF1ki4H1" : true
        },
        "SportTypes" : {
            "-JZLOh7KtM78I5wAL6Ua" : true
        },
        "nickname" : "Jets",
        "teamname" : "Winnipeg Jets"
    }
}

代码就像:

var ref = new Firebase('https://sizzling-fire-6197.firebaseio.com/teams');
ref.child('winnipegjets').set(...);

答案 1 :(得分:0)

如果您没有设置优先权。然后你需要orderByChild,以便firebase返回结果。在你的情况下:

new Firebase("https://sizzling-fire-6197.firebaseio.com/teams")
            .orderByChild('teamname')
            .startAt('Winnipeg Jets')
            .endAt('Winnipeg Jets')
            .once('value', function(snap) {
                console.log('matching team is', snap.val())
            });