Firestore では、論理 OR 演算子がないため、目的のデータを取得するために複数のクエリをローカルでマージする必要がある場合があります。これにより、特に orderBy を使用して特定の順序でレコードを取得する場合に、結果の適切な順序を維持することについて懸念が生じます。
この問題を解決するには、2 番目のクエリを最初のクエリの onSuccessListener 内に配置することが 1 つの方法です。 。ただし、これはパフォーマンスの観点から非効率である可能性があります。
推奨される代替方法は、Tasks.whenAllSuccess() メソッドを利用してクエリをマージし、その順序を保持することです。このアプローチに従うと、次の手順を実行できます。
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 } });
combinedTask の onSuccess() メソッドは、両方のクエリの結果を表すオブジェクトのリストを、クエリと同じ順序で配置して提供します。マージされたタスク。
あるいは、タスクの連鎖に Tasks. continueWith() メソッドを使用することを検討できます。 whenAllSuccess() メソッドと continueWith() メソッドはどちらも、タスクをマージし、望ましい結果の順序を維持するための信頼できるメカニズムを提供します。詳細については、Firebase の公式ドキュメントを参照してください。
以上が2 つの Firestore クエリをローカルでマージし、結果の順序を保持する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。