在Firebase中使用.indexOn和嵌套键

Moe*_*chu 11 json firebase

我有一堆我想要索引的键 .indexOn

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

{
  "lambeosaurus": {
    "stats": {
      "height" : 2.1,
      "length" : 12.5,
      "weight": 5000
    }
  },
  "stegosaurus": {
    "stats": {
      "height" : 4,
      "length" : 9,
      "weight" : 2500
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

伤口我如何指定索引的规则是height哪个stats?我是否需要对数据进行重组或展平?

Tom*_*thy 26

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

{
  "rules": {
    "$dinosaur": {
      ".indexOn": ["stats/height"]
    }   
  }
}
Run Code Online (Sandbox Code Playgroud)

并查询嵌套值:

.orderByChild('stats/height')
Run Code Online (Sandbox Code Playgroud)


Rob*_*rco 16

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


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

{
  "rules": {
    "$dinosaur": {
      "stats": {
        ".indexOn": ["height"]
      }
    }   
  }
}
Run Code Online (Sandbox Code Playgroud)