2016-07-03 2 views
0

Firebase를 쿼리하기 위해 REST API를 사용하고 있습니다.REST API 액세스를 위해 Firebase에서 두 번째 자식 노드를 인덱싱

규칙은 다음과 같이 설정됩니다

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

는 GET 방식을 사용하여 아래의 URL을 조회하면

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 방법

,451,515,
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은 변경 사항 수신 대기에 대해 설명합니다. 내 질문에 색인 생성하는 동안.

+0

같은 동적 경로 인덱스를 정의 할 수 없습니다 : 내 문제를 해결

새 규칙. 이런 종류의 쿼리를 허용하려면 데이터 구조를 수정해야합니다. http://stackoverflow.com/questions/34363511/add-a-listener-to-a-child-inside-of-a- firebase-generated-key를 참조하십시오. –

답변

0

문제를 찾아서 상당한 시간을 보냈다가 Firebase에서 두 번째 노드를 인덱싱하는 솔루션을 찾아 낼 수있었습니다.

파이어베이스는 색인 생성을 위해 와일드 카드를 지원합니다.

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

은 "$ person"사람 ID (9001) 또는 귀하입니다. 방금 "$ person"이라고 썼습니까? –

+0

@AhmedHesham. '$ '접두어로 어떤 이름도 추가 할 수 있습니다. 이것은 와일드 카드로 작동합니다. –

관련 문제