indexOn用于嵌套数据Firebase



我无法正确获取规则的结构,以便访问嵌套数据。这是我的原始json:

{
"Field1" : "test",
"Field2" : "tests"
},
"client": {
"client_field": "Test!"
}

我正在尝试执行我的规则,以便我可以访问主字段field1field2,也可以访问嵌套的client_field

以下是我的规则:

{
"rules": {
".read": "now < 1635274993000",  // 2021-10-26
".write": "now < 1635274993000",  // 2021-10-26
"call": {
".indexOn":["field1", "field2", "client"]
},
}
}

我尝试了几种不同的方法,但似乎无法获得语法,也无法从Firebase获得Error saving rules

编辑:

我的数据库结构如下:

database
calls
- "Field1", "Field2"
- clients
- "client field"

因此,调用是最高级的,在每个调用中都有field1field2client,客户端有其嵌套字段client field

我希望能够indexOn客户端字段,这样我就可以获得client field是特定值的数据。

要对嵌套字段进行索引,可以在index语句中指定其整个路径。因此:

{
"rules": {
".read": "now < 1635274993000",  // 2021-10-26
".write": "now < 1635274993000",  // 2021-10-26
"call": {
".indexOn":["field1", "field2", "client/client_field"]
},
}
}

有了这个,您现在可以通过执行callRef.orderByChild("client/client_field")来对这个嵌套字段进行排序/筛选。