2015-11-06 9 views
8

私のfirebaseアプリケーションでは、ユニークなIDを生成するpush()メソッドを使用してオブジェクトを配列構造体に格納しています。これらのオブジェクトには、 "scheduledDate"という子プロパティがあります。このフィールドのインデックスを作成するには、firebaseにindexOnルールを作成するにはどうすればよいですか。イベントの下では、各ユーザーにはイベントの子配列よりもノードがあります。/events/userId/arrayOfEventsFirebaseの配列オブジェクトの子プロパティにインデックスを作成する方法

イベントのスケジュールされた日付でレコードを正常に取得するためにorderByChild()を使用できますが、そのインデックスについて警告します。

私のルールは次のようになります。クエリをやっ

"events":{ 
     ".read" : "auth != null", 
     ".write" : "auth != null", 
     ".indexOn": ["scheduledDate"] 
    } 

私のコードは次のようになります。これは動作するはず

  events:{ 
       user1:{ 
        -K2NYCT2_uMwsTSfH58O(push generated):{ 
         description: 'event 1', 
         scheduledDate: 1446730200000 
        }, 
        --K2NyNh660I4k8loar-z:{ 
         description: 'event 2', 
         scheduledDate: 1446730200000 
        }, 
       }, 
       user2:{ 

       } 
      } 
+0

データまたはコードの説明は、実際のデータ/コードと同じではありません。データのサンプル(スクリーンショットは不要です)とクエリに使用するコードを示してください。 –

+0

私は協力しているコードとデータ構造を表示するように編集しました。繰り返しますが、私はscheduledDateのインデックスを作成する必要があることを警告していますが、この深いレベルのindexOnルールを作成する方法はわかりません。 – Stradosphere

答えて

19

  this.dbEvents = new Firebase(firebaseEventsUrl); 

     var q; 

     q = this.dbEvents.child(userId).orderByChild("scheduledDate").limitToLast(limitToLast); 

     return $firebaseArray(q); 

私のデータは次のようになります。

{ 
    "rules": { 
    "events":{ 
     ".read" : "auth != null", 
     ".write" : "auth != null", 
     "$uid": { 
     ".indexOn": "scheduledDate" 
     } 
    } 
    } 
} 
+0

私はこれを得ます:FIREBASE WARNING:不特定のインデックスを使用しています。より良いパフォーマンスのために/ events/simplelogin:82に ".indexOn": "scheduledDate"をセキュリティルールに追加することを検討してください。 – Stradosphere

+0

ああ、今そこにユーザーのレベルがあることがわかります。私は更新します。 –

+1

これは、フランクに感謝します! "$ uid"にそのレベルを表す変数として何かを付けることはできますか? – Stradosphere

関連する問題