如何根据布尔值查询Firebase?

时间:2017-02-23 01:41:19

标签: javascript firebase firebase-realtime-database

"vehicles" : {
          "-KbwlIGLm6dxffPJoJJB" : {            
            "fuel" : "petrol",
            "groups" : {
              "-KdWh_9KVF16efcSdrji" : true,
              "-Kdb1G720MDgbuR3nPBL" : true
            },
            "make" : "Honda",
            "model" : "City",
            "name" : "Honda City",            
            "speed_limit" : 100,
            "tank_size" : 32,
            "type" : "car"
          },
          "-KdU-BlfEdqzKxFjGI3D" : {            
            "fuel" : "petrol",
            "groups" : {
              "-KdWh_9KVF16efcSdrji" : true
            },
            "make" : "yamaha",
            "model" : "FZ",
            "name" : "Yamaza FZ",            
            "speed_limit" : 60,
            "tank_size" : 12,
            "type" : "bike"
          }          
        }

我想检索groups具有-KdWh_9KVF16efcSdrji并且密钥必须等于true的结果。

vehicles_ref.child("groups").orderByChild("-KdWh_9KVF16efcSdrji").equalTo(true).on
("value", function (snapshot) {
    console.log(snapshot.val());
});

但目前我已按上述标准获得NULL

我更改了查询

vehicles_ref.orderByChild("/groups/-KdWh_9KVF16efcSdrji").equalTo(true).on("value", function (snapshot) {
    console.log(snapshot.val());
});

现在获得结果,但现在收到警告

  

FIREBASE警告:使用未指定的索引。考虑添加" .indexOn":" groups / -KdWh_9KVF16efcSdrji" at / vehicles to your security rules以获得更好的性能

如何添加索引以删除此警告?

1 个答案:

答案 0 :(得分:0)

我也发出了警告,我发送了firebase,我在查询中过滤查询,查找具有相同ID的项目。警告消息“.indexOn”是指数据库中的规则,应通过将“.indexOn”添加到您尝试对项目进行排序的组中来检查该规则。

{

  "scores": {

    "bruhathkayosaurus" : 55,
    "lambeosaurus" : 21,
    "linhenykus" : 80,
    "pterodactyl" : 93,
    "stegosaurus" : 5,
    "triceratops" : 22
        }
}

因为恐龙的名字只是关键。 我们可以在节点/分数中添加.value规则来优化我们的查询:

{

  "rules": {

    "scores": {
      ".indexOn": ".value"
         }
      }
}

您可以使用以下链接: https://firebase.google.com/docs/database/security/indexing-data?hl=es-419