Maison > interface Web > js tutoriel > Comment interroger efficacement les discussions Firebase en fonction de la présence des participants ?

Comment interroger efficacement les discussions Firebase en fonction de la présence des participants ?

Barbara Streisand
Libérer: 2024-12-31 14:04:14
original
850 Les gens l'ont consulté

How to Efficiently Query Firebase Chats Based on Participant Presence?

Comment interroger les discussions en fonction de la présence d'un participant

Énoncé du problème :

Étant donné une base de feu structure de base de données représentant les conversations de chat avec plusieurs participants, comment pouvons-nous interroger efficacement les chats qui incluent un participant ?

Requête actuelle (ne fonctionne pas) :

return this.af.database.list('chats', {
    query: {
        orderByChild: 'participants',
        equalTo: username, // How to check if participants contain username
    }
});
Copier après la connexion

Problèmes liés à la requête actuelle :

  • La structure de données utilise un tableau pour représenter les participants, ce qui permet des entrées en double.
  • Firebase autorise uniquement l'indexation sur des chemins fixes au sein des objets, ce qui rend difficile le filtrage sur des valeurs imbriquées telles que participants/nom d'utilisateur.

Solution recommandée : inverser l'index

Pour optimiser la requête , il est recommandé d'inverser la structure de l'index en aplatissant les données et en remontant les relations de la salle de discussion au niveau de l'utilisateur. Cela implique :

  • Stocker un ensemble d'identifiants de salle de discussion pour chaque utilisateur sous userChatrooms/{username}.
  • Utiliser la valeur true dans l'ensemble pour représenter que l'utilisateur est un participant dans la salle de discussion.

Données révisées Structure :

userChatrooms: {
  john: {
    chatRoom1: true,
    chatRoom2: true
  },
  puf: {
    chatRoom1: true,
    chatRoom3: true
  }
}
Copier après la connexion

Requête mise à jour :

ref.child('userChatrooms').child(username)
Copier après la connexion

Avantages de l'index inversé :

  • Permet une récupération efficace de la liste des salons de discussion pour un utilisateur spécifique à l'aide d'un seul requête.
  • Prend en charge les requêtes pour les salles de discussion en fonction de la présence des participants sans avoir besoin d'une indexation dynamique.
  • Reflète plus directement les fonctionnalités de l'application en modélisant le point de vue de l'utilisateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal