Heim > Web-Frontend > js-Tutorial > Wie kann ich Firebase oder Firestore effizient nach Chats mit einem bestimmten Teilnehmer abfragen?

Wie kann ich Firebase oder Firestore effizient nach Chats mit einem bestimmten Teilnehmer abfragen?

Susan Sarandon
Freigeben: 2024-12-19 16:17:13
Original
110 Leute haben es durchsucht

How to Efficiently Query Firebase or Firestore for Chats Containing a Specific Participant?

Firebase-Abfrage zum Finden von Chats mit einem Teilnehmer

Hintergrund:

Die Datenstruktur unten Consideration stellt ein Chat-System dar, bei dem Chats Teilnehmer und Chat-Elemente haben. Das Ziel besteht darin, die Tabelle „Chats“ abzufragen, um alle Chats abzurufen, die einen bestimmten Teilnehmer haben, basierend auf einer bestimmten Benutzernamenzeichenfolge.

Erster Versuch:

Der bereitgestellte Code versucht, mit den Methoden „orderByChild“ und „equalTo“ die Tabelle „chats“ nach dem Kind „participants“ abzufragen und dabei den Benutzernamen anzugeben, um Übereinstimmungen zu finden. Dieser Ansatz ist jedoch begrenzt, weil:

  • Teilnehmer werden als Array gespeichert:Diese Datenstruktur spiegelt nicht genau die Tatsache wider, dass Teilnehmer in einem Chat eindeutig sein sollten.
  • Indizierungseinschränkungen: Firebase erfordert vordefinierte Indizes zum Abfragen verschachtelter Pfade, was beim Umgang mit dynamischen Pfaden umständlich sein kann Daten.

Ansatz mit umgekehrtem Index:

Um diese Einschränkungen zu beheben, wird empfohlen, die Datenstruktur umzukehren, indem ein „userChatrooms“-Knoten erstellt wird, der Benutzer zuordnet zu den Chatrooms, an denen sie teilnehmen. Dies ermöglicht eine effiziente Filterung nach Benutzer:

userChatrooms: {
  john: {
    chatRoom1: true,
    chatRoom2: true
  },
  puf: {
    chatRoom1: true,
    chatRoom3: true
  }
}
Nach dem Login kopieren

Abfrage mit Invertiert Index:

Mit der umgekehrten Indexstruktur wird das Auffinden aller Chats für einen Benutzer einfacher:

ref.child("userChatrooms").child("john")
Nach dem Login kopieren

Alternative zu Cloud Firestore:

Cloud Firestore bietet mit seinem Array-Contains-Operator eine bessere Unterstützung für diese Art von Abfrage. Dies ermöglicht das direkte Filtern von Dokumenten, die einen bestimmten Wert in einem Array enthalten:

Query query = firestore.collection("chats")
                    .whereArrayContains("participants", username);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich Firebase oder Firestore effizient nach Chats mit einem bestimmten Teilnehmer abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage