Pangkalan data Firebase menawarkan pelbagai ciri untuk data pengurusan. Satu cabaran biasa ialah menanyakan data berdasarkan nilai dalam struktur anak bersarang. Panduan ini menunjukkan cara mengendalikan pertanyaan sedemikian dengan cekap dalam Firebase.
Pertimbangkan struktur jadual berikut:
chats --> randomId -->--> participants -->-->--> 0: 'name1' -->-->--> 1: 'name2' -->--> chatItems
Matlamatnya adalah untuk menanyakan 'sembang' jadual untuk mendapatkan semula semua sembang yang termasuk peserta tertentu. Percubaan pertanyaan semasa:
subscribeChats(username: string) { return this.af.database.list('chats', { query: { orderByChild: 'participants', equalTo: username, // How to check if participants contain username } }); }
Menghadapi cabaran disebabkan oleh pengehadan mengindeks laluan tetap dalam Firebase.
1. Set lwn. Tatasusunan:
Struktur data yang digunakan pada mulanya disimpan peserta sebagai tatasusunan, yang membenarkan pendua dan tidak menggambarkan model peserta unik yang diingini. Set Firebase menyediakan penyelesaian yang lebih sesuai, memastikan setiap kanak-kanak wujud sekali sahaja.
participants: { "puf": true }
2. Penyongsangan Indeks:
Daripada meletakkan peserta dalam sembang, struktur harus diterbalikkan untuk mencipta "indeks terbalik" yang menyenaraikan sembang berdasarkan peserta mereka. Ini membolehkan pertanyaan yang cekap untuk bilik sembang pengguna:
userChatrooms: { john: { chatRoom1: true, chatRoom2: true }, puf: { chatRoom1: true, chatRoom3: true } }
Kini, pertanyaan berikut boleh mendapatkan semula bilik sembang pengguna:
ref.child("userChatrooms").child("john")
Cloud Firestore menawarkan sokongan yang dipertingkatkan untuk jenis pertanyaan ini dengan pengendalinya yang mengandungi tatasusunan, yang membenarkan menapis dokumen berdasarkan nilai dalam tatasusunan:
query = collection.where('participants', 'array-contains', username);
Ini menyediakan penyelesaian yang lebih ringkas dan cekap berbanding di Firestore.
Dalam Firebase, menanyakan struktur data bersarang memerlukan perancangan dan pemahaman yang teliti tentang had struktur data. Dengan menggunakan set dan indeks terbalik serta memanfaatkan operator yang mengandungi tatasusunan Cloud Firestore, pembangun boleh mengendalikan pertanyaan sedemikian dengan cekap dalam aplikasi Firebase mereka.
Atas ialah kandungan terperinci Bagaimana untuk Menyoal Firebase dengan Cekap untuk Sembang yang Mengandungi Peserta Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!