2016-08-23 5 views
3

チャットルールでユーザー4321のindexOnを追加することに関してコンソール上でfirebaseメッセージを取得し続けます。以下は私のデータベースです。Firebaseデータベースのインデックスルールを追加するには?

enter image description here

そしてfirebaseの私のルールは次のようである:

{ 
    "rules": { 
    ".read": "auth != null", 
    ".write": "auth != null", 
    "users": { 
     ".indexOn": ["name", "email","uid"], 
     "$uid": { 
     ".write": "$uid === auth.uid" 
     } 
    }, 
    "chats": { 
     "$key": { 
     ".indexOn": ["uid"] 
     } 
    } 
    } 
} 

私はインデックスが動作しない理由はわかりません。そして、データベース全体のインデックス作成をどのように改善できますか?

+0

あなたの質問にJSONツリーの画像が含まれています。 Firebaseデータベースコンソールの[エクスポート]ボタンをクリックすると、実際のJSONをテキストとして置き換えてください。 JSONをテキストとして検索可能にすることで、実際のデータを使ってテストしたり、答えに使用したりすることができます。一般的には、これは良いことです。 –

+0

こんにちは、少し関係のない質問です。私は同様の構造を扱っており、特定のユーザーのチャットを照会したい。これは 'chats/CHAT_ID/USER_ID'でなければなりませんが、私はCHAT_IDを持っていないので、それをどのように処理するのか分かりません。あなたは同様の問題に直面しましたか? – WedgeSparda

答えて

4

あなたの現在のデータ構造では、チャットルームのすべてのメンバーだけを簡単に一覧表示することができます。ユーザーが所属するすべてのチャットを一覧表示する場合は、すべて/chatsのレコードを検索する必要があるため、そのメッセージが表示される理由が考えられます。

チャットルームのメンバーシップデータは、/chat/<chat-id>/members/users/<uid>/groupsの両方に複製する必要があります。あなたのケースはthe Firebase guide hereのものとほぼ同じです - 特にリンク先のセクションのコードを読んでくださいが、ガイド全体を読むのが最善です。データベースの仕組みを理解するのに本当に役立ちました。

Btw:チャットであ​​なたのルール:".indexOn": ["uid"]は、投稿したサンプルデータで何もしません。 「uid属性でチャットルームのインデックスを作成する」と表示されますが、チャットルームにはuidキーが含まれていません(uid: 'someid'ではなく、'someid': true)。インデックス作成の仕組みについては、indexing guideをご覧ください。

関連する問題