Recherche de discussions par participant dans Firebase à l'aide de chaînes de requête composées
Lors de la structuration des données dans Firebase, il est crucial d'optimiser l'accès à la base de données pour une récupération efficace. Cela devient particulièrement important lors de l'interrogation de relations complexes.
Problème de requête d'origine
Imaginez une table Firebase nommée « chats » qui contient des listes de participants et des éléments de discussion. L'objectif est de trouver toutes les discussions impliquant un nom d'utilisateur spécifié. Malheureusement, la requête actuelle :
this.af.database.list('chats', { query: { orderByChild: 'participants', equalTo: username, // How to check if participants contain username } });
n'est pas efficace. En effet :
Structure de données optimisée
Pour résoudre ces problèmes, pensez à inverser l'index en stockant catégories au niveau supérieur de l'arborescence et aplatissant la structure de la base de données :
userChatrooms: { john: { chatRoom1: true, chatRoom2: true }, puf: { chatRoom1: true, chatRoom3: true } }
Cette structure vous permet d'interroger efficacement les listes de salons de discussion pour un utilisateur spécifique :
ref.child('userChatrooms').child('john')
Requête composée avec Cloud Firestore
Si vous utilisez Cloud Firestore, vous pouvez tirer parti de son puissant opérateur array-contains et traiter les tableaux comme sets :
db.collection('chats').where('participants', 'array-contains', username)
Cette requête recherche efficacement les discussions qui contiennent l'utilisateur spécifié en tant que participant.
En optimisant votre structure de données et en employant des techniques de requête appropriées, vous pouvez améliorer considérablement les performances de votre Requêtes Firebase pour des scénarios de relations complexes.
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!