Dalam Firestore, ketiadaan operator OR logik mungkin memerlukan penggabungan berbilang pertanyaan secara setempat untuk mendapatkan semula data yang diingini. Ini menimbulkan kebimbangan tentang mengekalkan susunan keputusan yang betul, terutamanya apabila menggunakan orderBy untuk mendapatkan semula rekod dalam urutan tertentu.
Untuk menyelesaikan isu ini, satu pendekatan ialah meletakkan pertanyaan kedua dalam onSuccessListener pertanyaan pertama . Walau bagaimanapun, ini mungkin tidak cekap dari sudut prestasi.
Alternatif yang disyorkan ialah menggunakan kaedah Tasks.whenAllSuccess() untuk menggabungkan pertanyaan dan mengekalkan susunannya. Dengan mengikuti pendekatan ini, anda boleh melaksanakan langkah berikut:
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 } });
Kaedah onSuccess() dalam combinedTask memberikan anda senarai objek yang mewakili hasil kedua-dua pertanyaan, disusun dalam susunan yang sama seperti tugasan yang telah digabungkan.
Sebagai alternatif, anda boleh mempertimbangkan untuk menggunakan kaedah Tasks.continueWith() untuk rantaian tugas. Kedua-dua kaedah whenAllSuccess() dan continueWith() menyediakan mekanisme yang boleh dipercayai untuk menggabungkan tugas dan mengekalkan susunan hasil yang diingini. Sila rujuk dokumentasi rasmi Firebase untuk mendapatkan maklumat lanjut.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Dua Pertanyaan Firestore Setempat dan Mengekalkan Pesanan Hasil?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!