我有一个数据库结构:
newsfeed-21f5c
newsfeed3:9:2016:18:1:39
text: "5"
time: "3:9:2016:18:1:39"
timeStampFirebase: 1475661721607
newsfeed4:9:2016:11:16:10
number: 7
time: "4:9:2016:11:16:10"
timeStampFirebase: 1475723771672
我试着跑:
var search = firebase.database().ref("newsfeed");
search.orderByChild("number").equalTo(7).on("child_added", function(snapshot) {
console.log(snapshot.key);
});
我一直收到Firebase警告。
FIREBASE警告:使用未指定的索引。考虑添加" .indexOn":" number"在/ newsfeed到您的安全规则以获得更好的性能
我想要实现的目标是使用等于newsfeeds
的数字键搜索7
。
我对Firebase很陌生,所以所有的帮助都会受到赞赏。
答案 0 :(得分:1)
您收到的消息,
FIREBASE WARNING: Using an unspecified index. Consider adding ".indexOn": "number" at /newsfeed to your security rules for better performance
不是错误。你的代码应该有效。 Firebase支持索引,可以大大提高像这样的搜索速度。您看到的警告是Firebase,要求您配置索引以获得更好的性能。
如何操作:
转到Firebase控制台。
在数据库下查看 - >规则(其中一个标签)。
您可以在其中设置JSON格式的权限规则和索引。复制粘贴此JSON:
{
"rules": {
"newsfeed": {
".indexOn": ["number"]
}
}
}
PS:使用snapshot.getKey()
获取firebase密钥。
答案 1 :(得分:0)
警告说您应该在number
字段上定义索引,因为您要通过该字段查询。基本上,如果您事先告诉Firebase您要查询的内容,他们可以在内部管理您的数据,以通过创建索引来更好地支持该查询。