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

Bagaimana untuk Menyoal Firebase dengan Cekap untuk Sembang yang Melibatkan Peserta Tertentu?

Susan Sarandon
Susan Sarandonasal
2025-01-01 06:28:11894semak imbas

How to Efficiently Query Firebase for Chats Involving a Specific Participant?

Mencari Sembang oleh Peserta dalam Firebase Menggunakan Rentetan Pertanyaan Kompaun

Apabila menstruktur data dalam Firebase, adalah penting untuk mengoptimumkan akses pangkalan data untuk mendapatkan semula yang cekap. Ini menjadi sangat penting apabila menanyakan perhubungan yang rumit.

Isu Pertanyaan Asal

Bayangkan jadual Firebase bernama "sembang" yang mengandungi senarai peserta dan item sembang. Matlamatnya adalah untuk mencari semua sembang yang melibatkan nama pengguna yang ditentukan. Malangnya, pertanyaan semasa:

this.af.database.list('chats', {
    query: {
        orderByChild: 'participants',
        equalTo: username, // How to check if participants contain username
    }
});

tidak berkesan. Ini kerana:

  • Set vs Array: Senarai peserta dimodelkan sebagai tatasusunan, membenarkan penyertaan pendua. Struktur ini tidak menggambarkan dengan tepat aspek peserta yang unik.
  • Harta Tidak Terindeks: Untuk menyemak sama ada peserta hadir dalam sembang, anda perlu membuat indeks khusus untuk setiap nama pengguna.

Data Dioptimumkan Struktur

Untuk menangani isu ini, pertimbangkan untuk menyongsangkan indeks dengan menyimpan kategori di peringkat atas pokok dan meratakan struktur pangkalan data:

userChatrooms: {
  john: {
    chatRoom1: true,
    chatRoom2: true
  },
  puf: {
    chatRoom1: true,
    chatRoom3: true
  }
}

Struktur ini membolehkan anda untuk cekap senarai bilik sembang pertanyaan untuk pengguna tertentu:

ref.child('userChatrooms').child('john')

Pertanyaan Kompaun dengan Awan Firestore

Jika menggunakan Cloud Firestore, anda boleh memanfaatkan pengendalinya yang mengandungi tatasusunan yang berkuasa dan menganggap tatasusunan sebagai set:

db.collection('chats').where('participants', 'array-contains', username)

Pertanyaan ini dengan cekap mencari sembang yang mengandungi pengguna yang ditentukan sebagai seorang peserta.

Dengan mengoptimumkan struktur data anda dan menggunakan teknik pertanyaan yang sesuai, anda boleh meningkatkan prestasi anda dengan ketara. Pertanyaan Firebase untuk senario perhubungan yang kompleks.

Atas ialah kandungan terperinci Bagaimana untuk Menyoal Firebase dengan Cekap untuk Sembang yang Melibatkan Peserta Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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