ホームページ >ウェブフロントエンド >jsチュートリアル >特定の参加者が関与するチャットについて Firebase に効率的にクエリを実行するにはどうすればよいですか?
複合クエリ文字列を使用して Firebase で参加者ごとにチャットを検索する
Firebase でデータを構造化する場合、効率的な取得のためにデータベース アクセスを最適化することが重要です。これは、複雑な関係をクエリする場合に特に重要になります。
元のクエリの問題
参加者リストとチャット アイテムを含む「chats」という名前の Firebase テーブルを想像してください。目標は、指定されたユーザー名が関係するすべてのチャットを検索することです。残念ながら、現在のクエリ:
this.af.database.list('chats', { query: { orderByChild: 'participants', equalTo: username, // How to check if participants contain username } });
は有効ではありません。これは次の理由によるものです。
最適化されたデータ構造
これらの問題に対処するには、カテゴリをツリーの最上位に保存し、データベース構造を平坦化することでインデックスを反転することを検討してください:
userChatrooms: { john: { chatRoom1: true, chatRoom2: true }, puf: { chatRoom1: true, chatRoom3: true } }
この構造により、特定のユーザーのチャット ルーム リストを効率的にクエリできます:
ref.child('userChatrooms').child('john')
Cloud Firestore を使用した複合クエリ
Cloud Firestore を使用している場合は、次のことが可能です。強力な array-contains 演算子を活用し、配列をセットとして扱います:
db.collection('chats').where('participants', 'array-contains', username)
このクエリは、指定されたユーザーを参加者として含むチャットを効率的に検索します。
データ構造を最適化し、適切なデータ構造を採用することにより、クエリ手法を使用すると、複雑な関係シナリオにおける Firebase クエリのパフォーマンスを大幅に向上させることができます。
以上が特定の参加者が関与するチャットについて Firebase に効率的にクエリを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。