私はAngularJSとFirebaseを勉強しています。私はコードを理解するために簡単なChatAppで遊んでいます。私は必要なのためのチャットルームを取得するためにFirebaseクエリを実行するために持っているよりも、私は、ユーザノードでチャットリンクを追加することはできません原因Firebase保護ルールに".indexOn":Firebaseルールに ".value"を追加する
"chat": {
"messages": {
"chat1": { [ list of messages ] },
"chat2": { [ list of messages ] }
},
"rooms": {
"chat1": {
"users": {
"user1": true,
"user2": true
}
},
"chat2": {
"users": {
"user2": true,
"user3": true
}
}
}
}
:
マイFirebase DB構造は次のようですユーザーは、orderByChild()
というクエリをApp Start Upで使用します。ほかすべてのものの仕事
var chatLink = firebase.database().ref('chat/rooms');
chatLink
.orderByChild('users/' + userId)
.equalTo(true)
.once('value', function(chatSnap){
/* Do Some Stuff Here */
});
が、私は、コンソールに警告を受けています:Firebaseを使用して
は、私が使用しているすべてのチャットを検索することができるよりも簡単です
FIREBASE警告:使用します不特定のインデックス。でユーザー
.indexOn: .value
、私は私ができる、変数orderByChild()
クエリのことを発見し、ウェブ上で検索する 『のユーザー/ {userIdを}』よりよい性能のためのあなたのセキュリティルールに部屋/チャット/時
:「.indexOn」を追加することを検討してください私のFirebaseのルール。
私はこのルールを追加しようとしました:
{
"rules": {
"chat": {
"rooms": {
".indexOn": ".value"
}
}
}
}
をしかし、私はまだ、常にその警告を受けています。どうすれば修正できますか?
ありがとうございました!インデックスへ
おかげで、しかし、 ".indexOn": ".value"のようなルールはどうですか?私は変数クエリで使用することができますが、私の場合はうまくいきません... –
'.value'のインデックスは' orderByValue 'クエリ。あなたのものは' orderByChild'クエリなので、名前が付けられた各子にインデックスが必要です。 –