Pertanyaan Firebase untuk Mencari Sembang yang Mengandungi Peserta
Latar Belakang:
Struktur data di bawah pertimbangan mewakili sistem sembang di mana sembang mempunyai peserta dan item sembang. Matlamatnya adalah untuk menanyakan jadual "sembang" untuk mendapatkan semula semua sembang yang mempunyai peserta tertentu berdasarkan rentetan nama pengguna yang diberikan.
Percubaan Awal:
Kod yang disediakan cuba menggunakan kaedah orderByChild dan equalTo untuk menanyakan jadual "sembang" oleh anak "peserta", menyatakan nama pengguna untuk dicari perlawanan. Walau bagaimanapun, pendekatan ini terhad kerana:
Pendekatan Indeks Terbalik:
Untuk menangani batasan ini, adalah disyorkan untuk menyongsangkan struktur data dengan mencipta "userChatrooms " nod yang memetakan pengguna ke bilik sembang yang mereka sertai. Ini membolehkan penapisan cekap oleh pengguna:
userChatrooms: { john: { chatRoom1: true, chatRoom2: true }, puf: { chatRoom1: true, chatRoom3: true } }
Pertanyaan menggunakan Indeks Terbalik:
Dengan struktur indeks terbalik, mencari semua sembang untuk pengguna menjadi mudah:
ref.child("userChatrooms").child("john")
Cloud Firestore Alternatif:
Cloud Firestore menyediakan sokongan yang lebih baik untuk jenis pertanyaan ini dengan pengendalinya yang mengandungi tatasusunan. Ini membenarkan penapisan langsung dokumen yang mengandungi nilai tertentu dalam tatasusunan:
Query query = firestore.collection("chats") .whereArrayContains("participants", username);
Atas ialah kandungan terperinci Bagaimana untuk Menyoal Firebase atau Firestore dengan Cekap untuk Sembang yang Mengandungi Peserta Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!