Maison >Java >javaDidacticiel >Comment fusionner localement les requêtes Firestore tout en préservant l'ordre ?

Comment fusionner localement les requêtes Firestore tout en préservant l'ordre ?

DDD
DDDoriginal
2024-11-15 06:32:02630parcourir

How to Merge Firestore Queries Locally While Preserving Order?

Fusionner localement les requêtes Firestore avec un ordre approprié

En l'absence d'opérateur logique OR dans Firestore, la fusion de deux requêtes distinctes doit être effectuée localement pour récupérer les résultats souhaités. Pour maintenir un ordre correct, envisagez d'utiliser la méthode Tasks.whenAllSuccess() au lieu d'imbriquer la deuxième requête dans l'écouteur de réussite de la première.

Voici un extrait de code illustrant l'approche recommandée :

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) {
         // The results are ordered according to the order of the queries
         // ...
    }
});

La méthode whenAllSuccess() renvoie une tâche qui sera terminée lorsque toutes les tâches fournies seront terminées avec succès. Le résultat de la tâche est une liste d'objets, où chaque objet représente le résultat de la tâche correspondante. Dans ce cas, la liste contiendra deux éléments, chacun représentant respectivement le résultat de firstTask et secondTask. L'ordre des éléments de la liste correspondra à l'ordre dans lequel les tâches ont été spécifiées dans whenAllSuccess().

Cette approche garantit que les résultats sont classés en fonction de l'ordre des tâches, vous permettant de fusionner les éléments de la liste. résultats de plusieurs requêtes tout en préservant leur séquence appropriée.

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!

Déclaration:
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