Firestore に論理 OR 演算子がない場合、目的の結果を取得するには、2 つの別個のクエリをローカルでマージする必要があります。適切な順序を維持するには、最初のクエリの成功リスナー内に 2 番目のクエリをネストする代わりに、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) { // The results are ordered according to the order of the queries // ... } });
whenAllSuccess() メソッドは、指定されたすべてのタスクが正常に完了したときに完了するタスクを返します。タスクの結果はオブジェクトのリストであり、各オブジェクトは対応するタスクの結果を表します。この場合、リストには 2 つの要素が含まれ、それぞれが firstTask と SecondTask の結果を表します。リスト内の要素の順序は、タスクが whenAllSuccess() に指定された順序と一致します。
このアプローチにより、結果がタスクの順序に基づいて順序付けされるため、要素をマージできます。適切な順序を維持しながら、複数のクエリの結果を取得します。
以上が順序を維持しながらローカルで Firestore クエリをマージするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。