Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Mendapatkan Produk Rawak Tunggal dengan Cekap daripada Koleksi Firebase yang Besar dalam Node?

Mary-Kate Olsen
Lepaskan: 2024-10-28 23:41:30
asal
911 orang telah melayarinya

How to Efficiently Retrieve a Single Random Product from a Large Firebase Collection in Node?

Cara Mendapatkan Satu Produk Rawak Unik Tunggal daripada Koleksi Node Firebase

Pengenalan Masalah:

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.

Penyelesaian 1: Pendekatan Klasik

Untuk mengelak daripada memuat turun semua produk, anda boleh menggunakan pendekatan klasik:

  1. Gelung melalui koleksi produk dan simpan semua nama produk dalam senarai.
  2. Jana indeks rawak untuk memilih dan mendapatkan semula produk yang sepadan.

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

Penyelesaian 2: Pendekatan Nyahnormal

Untuk koleksi yang lebih besar, pendekatan nyahnormal disyorkan:

  1. Buat nod "productIds" dengan ID semua produk.
  2. Dapatkan ID produk rawak daripada nod "productIds".
  3. Gunakan ID produk untuk menanyakan nod "produk" dan dapatkan semula butiran produk yang sepadan.

Struktur Pangkalan Data:

<code class="json">Firebase-root
   |
   --- products
   |     |
   |     --- productIdOne
   |     |      |
   |     |      --- //details
   |     |
   |     --- productIdTwo
   |            |
   |            --- //details
   |      
   --- productIds
          |
          --- productIdOne: true
          |
          --- productIdTwo: true
          |
          --- //And so on</code>
Salin selepas log masuk

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

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!

sumber:php.cn
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