【问题标题】:React native firebase 'average' query?反应原生火力“平均”查询?
【发布时间】:2016-12-21 05:37:32
【问题描述】:

我来自 php/mysql 背景,json 数据和 firebase 查询对我来说仍然很新。现在我在 React Native 中工作,我有一个数据集合,其中一个键存储一个整数。我想得到所有整数的平均值。我什至从哪里开始?

我之前使用过 Firebases snapshot.numChildren 函数,因此我对这个 json 世界变得更加熟悉,但我们将不胜感激任何形式的帮助。谢谢!

【问题讨论】:

标签: firebase react-native firebase-realtime-database nosql


【解决方案1】:

因此,您知道可以返回所有数据并确定平均值。我猜这是针对大量数据的,在这种情况下,最好不要在每次您想要检索和平均时返回整个节点。

这取决于这些数据是什么以及如何更新它,但我认为一种选择是简单地拥有一个单独的节点,每次添加或更改集合时都会更新该节点。

这是一些非常粗略的伪代码。例如,如果您的数据库如下所示:

database
|
+--collection
|   |
|   +--item_one (probably a uid like -k2jduwi5j5j5)
|   |   |
|   |   +--number: 90
|   |
|   +--item_two
|   |   |
|   |   +--number: 70
|
+--collection_metadata
|   |
|   +--average: 80
|   |
|   +--number_of_items: 2

然后,当添加新项目时,您运行元数据计算:

var numerator = average * number_of_items + newItem.number;
number_of_items++; <-- this is your new number of items
numerator / number_of_items; <-- this is your new average

然后当一个项目被更新时,你运行一个元数据计算:

var numerator = average * number_of_items - changedItem.oldNumber + changedItem.newNumber;
numerator / number_of_items; <-- this is your new average

现在,当您需要这些数据时,手头上总是有这些数据。

【讨论】:

  • 我喜欢你在这里的想法!我肯定会在未来的项目中使用它。对于这个特定的,我认为返回整个集合以找到平均值可能是理想的。最好的做法是什么? (暂时不关心性能问题)
  • 在这种情况下,您只需返回整个节点,然后将所有值相加,然后除以项目数。因此,您返回的对象上可能有一个 for each 循环。
  • 如何获得我想要的所有值的总和?例如获取 item_one.number 和 item_two.number 的总和。
猜你喜欢
  • 1970-01-01
  • 2020-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-05
相关资源
最近更新 更多