ホームページ > ウェブフロントエンド > jsチュートリアル > 参加者のプレゼンスに基づいて Firebase チャットを効率的にクエリするにはどうすればよいですか?

参加者のプレゼンスに基づいて Firebase チャットを効率的にクエリするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-31 14:04:14
オリジナル
850 人が閲覧しました

How to Efficiently Query Firebase Chats Based on Participant Presence?

参加者のプレゼンスに基づいてチャットをクエリする方法

問題ステートメント:

Firebase が指定された場合複数の参加者とのチャット会話を表すデータベース構造。チャットを効率的にクエリするにはどうすればよいですか?特定の参加者が含まれていますか?

現在のクエリ (機能していません):

return this.af.database.list('chats', {
    query: {
        orderByChild: 'participants',
        equalTo: username, // How to check if participants contain username
    }
});
ログイン後にコピー

現在のクエリの問題:

  • データ構造では配列を使用して参加者を表すため、重複が可能ですエントリ。
  • Firebase ではオブジェクト内の固定パスのインデックス作成のみが許可されているため、参加者/ユーザー名などのネストされた値でフィルタリングするのは困難です。

推奨される解決策: インデックスを反転

クエリを最適化するには、データをフラット化し、チャットルームの関係をユーザーレベルに。これには以下が含まれます。

  • 各ユーザーのチャット ルーム ID のセットを userChatrooms/{username} に保存します。
  • セット内で true の値を使用して、ユーザーがチャット ルームの参加者。

改訂データ構造:

userChatrooms: {
  john: {
    chatRoom1: true,
    chatRoom2: true
  },
  puf: {
    chatRoom1: true,
    chatRoom3: true
  }
}
ログイン後にコピー

更新されたクエリ:

ref.child('userChatrooms').child(username)
ログイン後にコピー

転置インデックスの利点:

  • を使用して、特定のユーザーのチャット ルームのリストを効率的に取得できます。単一のクエリ。
  • 動的インデックス作成を必要とせず、参加者のプレゼンスに基づいてチャット ルームのクエリをサポートします。
  • ユーザーの視点をモデル化することで、アプリの機能をより直接的に反映します。

以上が参加者のプレゼンスに基づいて Firebase チャットを効率的にクエリするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート