2016-07-03 7 views
0

Firebaseを照会するためにREST APIを使用しています。Firebase for REST APIアクセスの2番目の子ノードのインデックス付け

ルールは以下のように設定されている:

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

GETメソッド

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

応答使ってURLの下に照会する場合:

{ 
    "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は、リスニングについて話します。私の質問はインデックス作成中ですが。

+0

このような動的パス上のインデックスを定義することはできません。この種のクエリーを可能にするには、データ構造を変更する必要があります。 http://stackoverflow.com/questions/34363511/add-a-listener-to-a-child-inside-of-a-firebase-generated-keyを参照してください。 –

答えて

0

問題を検索して、かなり時間を費やした後、Firebaseの2番目のノードを索引付けする解決策を見つけ出すことができました。

Firebaseはインデックス作成のためにワイルドカードをサポートしています。

私の問題を解決した新しいルールが、:

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

は "$ person"人ID(9001)またはあなたですちょうど "$人"と書いていますか? –

+0

@AhmedHesham。接頭辞として '$ 'を付けて任意の名前を付けることができます。これはワイルドカードとして機能します。 –

関連する問題