Maison  >  Article  >  Java  >  Comment fusionner des requêtes Firestore localement à l'aide de tâches ?

Comment fusionner des requêtes Firestore localement à l'aide de tâches ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-11 09:44:03491parcourir

How to Merge Firestore Queries Locally Using Tasks?

Fusionner localement des requêtes Firestore

Comme Firestore ne dispose pas d'un opérateur OU logique, la fusion locale de plusieurs requêtes peut être un défi. Une approche consiste à imbriquer les requêtes dans le onSuccessListener d'une autre requête. Cependant, cela peut soulever des problèmes de performances.

Pour résoudre ce problème, une solution alternative utilisant Tasks est recommandée. La méthode whenAllSuccess() fusionne deux tâches ou plus et appelle un rappel lorsque toutes les tâches se terminent avec succès :

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) {
         //Do what you need to do with your list
    }
});

Dans cet exemple, la liste transmise au rappel onSuccess() contient les résultats des deux requêtes dans le le même ordre que celui dans lequel les tâches ont été définies.

Une autre option est la méthode continueWith(), qui enchaîne les tâches et appelle un rappel lorsque la tâche précédente se termine avec succès. Le choix entre whenAllSuccess() et continueWith() dépend des exigences spécifiques de l'application et du cas d'utilisation.

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