我试图在firebase上对我上传的一些测试数据做一个简单的equalTo()。这是代码。
var ref = new Firebase("https://crackling-fire-1105.firebaseio.com/business");
ref.orderByChild("city").equalTo("Pétion-Ville").on("child_added", function(snapshot) {
console.log(snapshot.key());
});
我在控制台里什么也没得到。
如果我在我自己的代码旁边使用firebase doc代码,那么它就可以运行。https://www.firebase.com/docs/web/guide/retrieving-data.html#section-queries
var ref = new Firebase("https://dinosaur-facts.firebaseio.com/dinosaurs");
ref.orderByChild("height").equalTo(25).on("child_added", function(snapshot) {
console.log(snapshot.key());
});
Index.on我正在收到错误。 (这已在下面的评论中得到解决)
FIREBASE警告:使用未指定的索引。考虑在/ business中添加“.indexOn”:“city”到您的安全规则以获得更好的性能
第一次获得它后,我添加了.indexOn:“city”。我仍然收到这个错误,我在控制台中什么也没得到。
这些是安全和规则控制台中的规则。
{
"rules": {
".read": true,
".write": true,
".indexOn": "city"
}
}
json结构如下:
{
business {
Joe's Designs: {
"accountid"
"address"
"city"
"email"
"heading"
"headingid"
"objectId"
"phonenumber1"
"website"
}
}
}
非常感谢任何帮助。谢谢。
答案 0 :(得分:3)
在您需要索引的键下方指定.indexOn
。
{
"rules": {
"business": {
".indexOn": "\"city\""
}
}
}
这使您可以为任何顶级密钥设置.indexOn
规则。
通过查看您的数据,您似乎正在逃避密钥。我不确定你为什么这样做,但这需要你使用转义值进行索引和查询。
var ref = new Firebase("https://crackling-fire-1105.firebaseio.com/business");
ref.orderByChild("\"city\"").equalTo("Pétion-Ville").on("child_added", function(snapshot) {
console.log(snapshot.val());
});