Saya mencoba membuat aplikasi tempat saya bisa mendapatkan / mengatur data di akun pengguna tertentu dan saya tergoda oleh Firebase.
Masalah yang saya alami adalah bahwa saya tidak tahu bagaimana menargetkan data pengguna tertentu ketika struktur saya terlihat seperti ini:
online-b-cards
- users
- InnROTBVv6FznK81k3m
- email: "hello@hello"
- main: "Hello world this is a text"
- name: "Alex"
- phone: 12912912
Saya telah melihat sekeliling dan saya benar-benar tidak dapat menemukan apa pun tentang cara mengakses data individu apalagi ketika mereka diberi beberapa hash acak sebagai ID mereka.
Bagaimana cara saya mengambil informasi pengguna berdasarkan nama mereka? Jika ada cara yang lebih baik untuk melakukannya, tolong beri tahu saya!
firebase
firebase-realtime-database
Richard Bamford
sumber
sumber
Jawaban:
Sebelumnya, Firebase mengharuskan Anda untuk membuat indeks Anda sendiri atau mengunduh semua data di lokasi untuk menemukan dan mengambil elemen yang cocok dengan beberapa atribut anak (misalnya, semua pengguna dengan
name === "Alex"
).Pada Oktober 2014, Firebase meluncurkan fungsionalitas kueri baru melalui
orderByChild()
metode, yang memungkinkan Anda untuk melakukan jenis kueri ini dengan cepat dan efisien. Lihat jawaban yang diperbarui di bawah ini.Saat menulis data ke Firebase, Anda memiliki beberapa opsi berbeda yang akan mencerminkan berbagai kasus penggunaan. Pada tingkat tinggi, Firebase adalah penyimpanan data NoSQL yang terstruktur pohon, dan menyediakan beberapa primitif sederhana untuk mengelola daftar data:
Tulis ke Firebase dengan kunci unik dan dikenal:
Tambahkan ke daftar dengan kunci yang dibuat secara otomatis yang akan secara otomatis mengurutkan berdasarkan waktu yang ditulis:
Dengarkan perubahan data dengan jalurnya yang unik dan dikenal:
Memfilter atau memesan data dalam daftar dengan kunci atau nilai atribut :
Dengan tambahan
orderByChild()
, Anda tidak perlu lagi membuat indeks sendiri untuk pertanyaan tentang atribut anak! Misalnya, untuk mengambil semua pengguna dengan nama "Alex":Engineer di Firebase di sini. Saat menulis data ke Firebase, Anda memiliki beberapa opsi berbeda yang akan mencerminkan berbagai kasus penggunaan aplikasi. Karena Firebase adalah penyimpanan data NoSQL, Anda harus menyimpan objek data dengan kunci unik sehingga Anda dapat langsung mengakses item itu atau memuat semua data di lokasi tertentu dan mengulangi setiap item untuk menemukan simpul yang Anda cari . Lihat Menulis Data dan Mengelola Daftar untuk informasi lebih lanjut.
Saat Anda menulis data di Firebase, Anda bisa
set
menggunakan data jalur unik yang ditentukan (yaitua/b/c
), ataupush
data ke dalam daftar, yang akan menghasilkan id unik (yaitua/b/<unique-id>
) dan memungkinkan Anda untuk mengurutkan dan menanyakan item dalam daftar itu berdasarkan waktu. . ID unik yang Anda lihat di atas dihasilkan dengan meneleponpush
untuk menambahkan item ke daftar dionline-b-cards/users
.Daripada menggunakan di
push
sini, saya akan merekomendasikan menggunakanset
, dan menyimpan data untuk setiap pengguna menggunakan kunci unik, seperti alamat email pengguna. Kemudian Anda dapat mengakses data pengguna secara langsung dengan menavigasionline-b-cards/users/<email>
melalui Firebase JS SDK. Sebagai contoh:Perhatikan bahwa karena Firebase tidak mengizinkan karakter tertentu dalam referensi (lihat Membuat Referensi ), kami menghapus
.
dan menggantinya dengan,
dalam kode di atas.sumber
orderByChild
fitur baru . Mengingat bahwa jawaban ini muncul cukup sering sebagai jawaban yang relevan / terkait, orang terikat untuk melihatnya dan harus mengetahui fitur permintaan baru.Anda dapat mengambil detailnya dengan kode berikut.
sumber
Saya pikir pendekatan terbaik adalah mendefinisikan id dari pengguna berdasarkan objek auth yang disediakan oleh Firebase. Ketika saya membuat pengguna saya, saya lakukan:
ID ini berasal dari:
Layanan autentikasi Firebase akan selalu memastikan id unik di antara semua penyedia mereka yang akan ditetapkan pada uid. Dengan cara ini selalu Anda akan memiliki auth.uid dan dapat dengan mudah mengakses pengguna yang diinginkan untuk memperbaruinya, seperti:
sumber
Ini adalah parafrase dari postingan yang membantu saya ketika mencoba mengakses id unik yang dibuat secara otomatis. Akses Firebase id unik dalam ng-repeat menggunakan sinkronisasi implisit angularFire
Terima kasih, bennlich (sumber):
Firebase berperilaku seperti objek javascript biasa. Mungkin contoh di bawah ini dapat membuat Anda di jalur yang benar.
Sunting: Tidak 100% yakin dengan hasil yang Anda inginkan, tetapi ada sedikit lebih banyak yang mungkin memicu momen 'aha'. Klik tombol yang Anda coba akses langsung di dasbor Firebase Anda. Dari sana Anda dapat menggunakan sesuatu seperti:
sumber
Ini adalah cara mengakses kunci unik yang dibuat secara otomatis di Firebase: struktur data : - Kartu Online - UniqueKey
sumber
Cara paling sederhana adalah berhenti menggunakan
.push(){}
fungsi yang akan menghasilkan kunci acak itu. Tetapi alih-alih gunakan
.update(){}
fungsi tempat Anda dapat menentukan nama anak alih-alih memiliki kunci acak.sumber
Mengambil data:
Di database Anda, Anda menggunakan id acak yang dihasilkan menggunakan
push()
, oleh karena itu jika Anda ingin mengambil data kemudian lakukan hal berikut:Menggunakan Firebase di Aplikasi Android:
Menggunakan Firebase di Javascript:
Di sini Anda memiliki snapshot (lokasi data)
users
saat Anda mengulang di dalam semua id acak dan mengambil nama.Mengambil data untuk Pengguna Tertentu:
Sekarang jika Anda ingin mengambil informasi hanya untuk pengguna tertentu, maka Anda perlu menambahkan kueri:
Menggunakan Firebase di Aplikasi Android:
Menggunakan Firebase dengan Javascript
Menggunakan
orderByChild("name").equalTo("Alex")
seperti mengatakanwhere name="Alex"
sehingga akan mengambil data yang terkait dengan Alex.Cara terbaik:
Yang terbaik adalah menggunakan Firebase Authentication, sehingga menghasilkan id unik untuk setiap pengguna dan menggunakannya sebagai ganti dari id acak
push()
, dengan cara ini Anda tidak perlu mengulangi semua pengguna karena Anda memiliki id dan dapat dengan mudah mengaksesnya.Pertama, pengguna harus masuk lalu Anda dapat mengambil id unik dan melampirkan pendengar untuk mengambil data lain dari pengguna itu:
Menggunakan Firebase dengan Android:
Menggunakan Firebase dengan Javascript:
sumber
Cara paling sederhana dan lebih baik untuk menambahkan Id unik ke basis data Anda menurut pengguna terotentikasi adalah:
UId akan menjadi Id unik untuk email / pengguna terotentikasi tertentu
sumber