首页  >  文章  >  Java  >  如何从 Node 中的大型 Firebase 集合中高效检索单个随机产品?

如何从 Node 中的大型 Firebase 集合中高效检索单个随机产品?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-28 23:41:30814浏览

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

如何从 Node Firebase 集合中检索单个唯一的随机产品

问题介绍:

在 Node Firebase 中,您有一个产品集合并且需要展示单一的、随机的产品。虽然您可以检索所有产品,然后随机选择一个,但如果您有大量产品,这种方法就会变得低效。

解决方案 1:经典方法

为了避免下载所有产品,您可以使用经典方法:

  1. 循环遍历产品集合并将所有产品名称保存在列表中。
  2. 生成随机索引以选择并检索相应的产品。

代码:

<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>

解决方案 2:非规范化方法

对于较大的集合,建议使用非规范化方法:

  1. 使用所有产品的ID创建一个“productIds”节点。
  2. 从“productIds”节点中检索随机产品ID。
  3. 使用产品ID查询“products”节点并检索相应的产品详细信息。

数据库结构:

<code class="json">Firebase-root
   |
   --- products
   |     |
   |     --- productIdOne
   |     |      |
   |     |      --- //details
   |     |
   |     --- productIdTwo
   |            |
   |            --- //details
   |      
   --- productIds
          |
          --- productIdOne: true
          |
          --- productIdTwo: true
          |
          --- //And so on</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>

这两种方法都可以有效地从大量集合中检索随机产品,同时最大限度地减少数据传输。选择最适合您的特定用例和性能要求的方法。

以上是如何从 Node 中的大型 Firebase 集合中高效检索单个随机产品?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn