索引Firebase中的第二个子节点以进行REST Api访问

时间:2016-07-03 13:52:31

标签: rest firebase firebase-realtime-database

我正在使用REST API来查询Firebase。

规则如下:

{
    "rules": {
        ".read": true,
        ".write": true,
        "user": {
            ".indexOn": "type"
        }
    }
}

使用GET方法查询以下网址时

https://exampleurl.firebaseio.com/user/9001.json

回应:

{
  "name": "Rohit",
  "person": {
    "-KLk3p3kUWg2j9p16kTw": {
      "mobile": "9002",
      "name": "Adarsh",
      "type": "D"
    },
    "-KLk4x2V_hfZwlsh6PMo": {
      "mobile": "9003",
      "name": "Manas",
      "type": "D"
    },
    "-KLk5-UPefdSMarC5VCQ": {
      "mobile": "9004",
      "name": "Sagar",
      "place": "thane",
      "type": "C"
    }
  }
}
  

在GET方法中使用过滤查询时出现错误

https://exampleurl.firebaseio.com/user/9001.json?orderBy="type"&startAt="D"

回复

{
  "error": "Index not defined, add \".indexOn\": \"type\", for path \"/user/9001\", to the rules"
}

我尝试使用以下规则。但是firebase不允许我保存。

{
    "rules": {
        ".read": true,
        ".write": true,
        "user/9001": {
            ".indexOn": "type"
        }
    }
}

Another question谈到倾听变革。我的问题是关于索引。

1 个答案:

答案 0 :(得分:0)

在搜索并花了很长时间解决问题后,能够找出在Firebase中索引第二个节点的解决方案。

Firebase支持使用外卡进行索引。

新规则解决了我的问题:

{
    "rules": {
        ".read": true,
        ".write": true,
        "user": {
           "$person":{
            ".indexOn": "type"
            }
        }
    }
}