2016-10-06 13 views
0

は、私はデータベースの構造を有する:FirebaseでequalsTo()を使用するにはどうすればよいですか?

newsfeed-21f5c 

newsfeed3:9:2016:18:1:39 
    text: "5" 
    time: "3:9:2016:18:1:39" 
    timeStampFirebase: 1475661721607 
newsfeed4:9:2016:11:16:10 
    number: 7 
    time: "4:9:2016:11:16:10" 
    timeStampFirebase: 1475723771672 

をそして私は実行してみました:

var search = firebase.database().ref("newsfeed"); 
    search.orderByChild("number").equalTo(7).on("child_added", function(snapshot) { 
    console.log(snapshot.key); 
    }); 

そして、私はFirebase警告を得続けます。

FIREBASE WARNING:不特定のインデックスを使用しています。より良いパフォーマンス

私は何を達成しようとしていること7に等しい数のキーでnewsfeedsを検索することであるため、セキュリティルールにニュースフィード/で 『数』:「.indexOn」を追加することを検討してください。

Firebaseにはかなり新しいので、すべての助けに感謝します。

+0

警告は何を言いますか? –

+0

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

+0

意味が分かりません。しかし、文書 – Pickles

答えて

1

メッセージあなたが取得している、

FIREBASE WARNING: Using an unspecified index. Consider adding ".indexOn": "number" at /newsfeed to your security rules for better performance

はエラーではありません。あなたのコードはうまくいくはずです。 Firebaseはインデックス作成をサポートしているため、このような検索の速度が大幅に向上します。表示されている警告は、パフォーマンスを向上させるためにインデックスを設定するように求めるFirebaseです。

これを行う方法:

Firebaseコンソールに移動します。

[データベース] - > [ルール](タブの1つ)の下に表示されます。

JSON形式でパーミッションルールとインデックスを設定できます。

{ 
    "rules": { 
    "newsfeed": { 
     ".indexOn": ["number"] 
    } 
    } 
} 

PS:firebaseキーを取得するためにsnapshot.getKey()を使用して、そこにこのJSONを貼り付けコピーします。

+0

の例と同じ方法を使用しています。{ "rules":{ ".read": "auth!= null"、 ".write": "auth!= null" "newsfeed ":{ " .indexOn ":[" number "] } } } – Pickles

+0

どうすれば既存のルールに追加できますか? – Pickles

+0

はい、そうです。あなたは "newsfeed"の前にコンマがありません。 –

0

numberフィールドにインデックスを定義する必要があるという警告が表示されます。そのフィールドでクエリを実行しているためです。基本的には、Firebaseに問い合わせ先の情報をあらかじめ伝えておけば、内部的にデータを管理して、インデックスを作成してそのクエリをよりうまくサポートすることができます。

関連する問題