在Firebase中使用.indexOn和嵌套键

时间:2014-11-27 21:48:07

标签: json firebase

我想要使用.indexOn

索引一堆密钥

假设我的数据如下所示。我希望能够使用.orderByChild("height")

{
  "lambeosaurus": {
    "stats": {
      "height" : 2.1,
      "length" : 12.5,
      "weight": 5000
    }
  },
  "stegosaurus": {
    "stats": {
      "height" : 4,
      "length" : 9,
      "weight" : 2500
    }
  }
}

我如何指定用于索引height stats的孩子的规则?我是否需要重组或展平我的数据?

2 个答案:

答案 0 :(得分:26)

您现在可以任意深入查询和索引。

{
  "rules": {
    "$dinosaur": {
      ".indexOn": ["stats/height"]
    }   
  }
}

并查询嵌套值:

.orderByChild('stats/height')

答案 1 :(得分:15)

更新2015/12/17: Firebase现在支持深度索引,请参阅Tom的回答。


您可以在数据树中任意嵌套索引规则,但您一次只能查询一个元素列表的属性 - 而不是任意深度。这是一些示例规则,索引高度:

{
  "rules": {
    "$dinosaur": {
      "stats": {
        ".indexOn": ["height"]
      }
    }   
  }
}