我正在尝试在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。还有一种搜索特定字段的方法。
答案 0 :(得分:2)
看起来你有一组团队,第一个团队在一个名为-JZQzhqTI6NUQMfgHwQc
的节点中(可能是通过调用push
生成的)。它的属性name
的值为winnipegjets
,属性teamname
的值为Winnipeg Jets
。
在Firebase query you can filter nodes in two ways中:
您的节点名为-JZQzhqTI6NUQMfgHwQc
并且具有优先级(未在您发布的JSON中显示)。这些是您可以过滤的唯一两个值。
如果您尚未使用优先级,可以考虑将name
或teamname
设置为优先级(查看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())
});