Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Menyoal Firebase atau Firestore dengan Cekap untuk Sembang yang Mengandungi Peserta Tertentu?

Bagaimana untuk Menyoal Firebase atau Firestore dengan Cekap untuk Sembang yang Mengandungi Peserta Tertentu?

Susan Sarandon
Lepaskan: 2024-12-19 16:17:13
asal
186 orang telah melayarinya

How to Efficiently Query Firebase or Firestore for Chats Containing a Specific Participant?

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:

  • Peserta disimpan sebagai tatasusunan: Struktur data ini tidak menggambarkan dengan tepat fakta bahawa peserta dalam sembang harus unik.
  • Had pengindeksan: Firebase memerlukan indeks yang dipratakrifkan untuk menanyakan laluan bersarang, yang boleh menjadi menyusahkan apabila berurusan dengan data dinamik.

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
  }
}
Salin selepas log masuk

Pertanyaan menggunakan Indeks Terbalik:

Dengan struktur indeks terbalik, mencari semua sembang untuk pengguna menjadi mudah:

ref.child("userChatrooms").child("john")
Salin selepas log masuk

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);
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan