Dans Firestore, l'absence d'opérateur logique OU peut nécessiter la fusion locale de plusieurs requêtes pour récupérer les données souhaitées. Cela soulève des inquiétudes quant au maintien du bon ordre des résultats, en particulier lors de l'utilisation de orderBy pour récupérer des enregistrements dans une séquence spécifique.
Pour résoudre ce problème, une approche consiste à placer la deuxième requête dans le onSuccessListener de la première requête. . Cependant, cela peut s'avérer inefficace du point de vue des performances.
Une alternative recommandée consiste à utiliser la méthode Tasks.whenAllSuccess() pour fusionner les requêtes et conserver leur ordre. En suivant cette approche, vous pouvez exécuter les étapes suivantes :
FirebaseFirestore rootRef = FirebaseFirestore.getInstance(); Query firstQuery = rootRef... Query secondQuery = rootRef... Task firstTask = firstQuery.get(); Task secondTask = secondQuery.get(); Task combinedTask = Tasks.whenAllSuccess(firstTask, secondTask) .addOnSuccessListener(new OnSuccessListener<List<Object>>() { @Override public void onSuccess(List<Object> list) { // Perform desired operations with your ordered results } });
La méthode onSuccess() de CombinedTask vous fournit une liste d'objets représentant les résultats des deux requêtes, classés dans le même ordre que le tâches qui ont été fusionnées.
Vous pouvez également envisager d'utiliser la méthode Tasks.continueWith() pour le chaînage des tâches. Les méthodes whenAllSuccess() et continueWith() fournissent des mécanismes fiables pour fusionner les tâches et maintenir l’ordre des résultats souhaité. Veuillez vous référer à la documentation officielle de Firebase pour plus d'informations.
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!