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

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

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-28 23:41:30814semak imbas

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>

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>

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!

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