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!