Dalam Node Firebase, anda mempunyai koleksi produk dan perlu memaparkan satu produk rawak. Walaupun anda berpotensi mendapatkan semula semua produk dan kemudian memilih satu secara rawak, pendekatan ini menjadi tidak cekap jika anda mempunyai koleksi yang banyak.
Untuk mengelak daripada memuat turun semua produk, anda boleh menggunakan pendekatan klasik:
Kod:
<code class="js">const productsRef = FirebaseDatabase.getInstance().getReference().child("products"); const productNames = []; productsRef.once('value').then(snapshot => { snapshot.forEach(child => { productNames.push(child.child("name").val()); }); const randomIndex = Math.floor(Math.random() * productNames.length); const selectedProduct = productNames[randomIndex]; // Display the selected product console.log(selectedProduct); });</code>
Untuk koleksi yang lebih besar, pendekatan nyahnormal disyorkan:
Struktur Pangkalan Data:
<code class="json">Firebase-root | --- products | | | --- productIdOne | | | | | --- //details | | | --- productIdTwo | | | --- //details | --- productIds | --- productIdOne: true | --- productIdTwo: true | --- //And so on</code>
Kod:
<code class="js">const productIdsRef = FirebaseDatabase.getInstance().getReference().child("productIds"); const randomId = Math.floor(Math.random() * Object.keys(productIdsRef).length); const selectedId = Object.keys(productIdsRef)[randomId]; const productsRef = FirebaseDatabase.getInstance().getReference().child("products"); const selectedProductRef = productsRef.child(selectedId); selectedProductRef.once('value').then(snapshot => { // Display the selected product console.log(snapshot.val()); });</code>
Kedua-dua pendekatan secara berkesan mendapatkan semula produk rawak daripada koleksi besar sambil meminimumkan pemindahan data. Pilih pendekatan yang paling sesuai dengan keperluan kes penggunaan dan prestasi khusus anda.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Produk Rawak Tunggal dengan Cekap daripada Koleksi Firebase yang Besar dalam Node?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!