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!