如何在Firebase中使用equalsTo()?

时间:2016-10-06 04:13:44

标签: javascript firebase firebase-realtime-database

我有一个数据库结构:

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很陌生,所以所有的帮助都会受到赞赏。

2 个答案:

答案 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您要查询的内容,他们可以在内部管理您的数据,以通过创建索引来更好地支持该查询。