Dans Node Firebase, vous disposez d'une collection de produits et doivent afficher un seul produit aléatoire. Bien que vous puissiez potentiellement récupérer tous les produits puis en sélectionner un au hasard, cette approche devient inefficace si vous avez une grande collection.
Pour éviter de télécharger tous les produits, vous pouvez utiliser l'approche classique :
Code :
<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>
Pour les collections plus importantes, une approche dénormalisée est recommandée :
Structure de la base de données :
<code class="json">Firebase-root | --- products | | | --- productIdOne | | | | | --- //details | | | --- productIdTwo | | | --- //details | --- productIds | --- productIdOne: true | --- productIdTwo: true | --- //And so on</code>
Code :
<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>
Les deux approches récupèrent efficacement un produit aléatoire à partir d’une grande collection tout en minimisant le transfert de données. Choisissez l'approche qui correspond le mieux à votre cas d'utilisation spécifique et à vos exigences de performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!