Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
反应本机firebase“平均”查询?_Firebase_React Native_Firebase Realtime Database_Nosql - Fatal编程技术网

反应本机firebase“平均”查询?

反应本机firebase“平均”查询?,firebase,react-native,firebase-realtime-database,nosql,Firebase,React Native,Firebase Realtime Database,Nosql,我来自php/mysql的背景,json数据和firebase查询对我来说还是相当陌生的。现在我在React Native中工作,我有一个数据集合,其中一个键存储一个整数。我想得到所有整数的平均值。我从哪里开始呢 我以前使用过Firebases snapshot.numChildren函数,所以我对这个json世界有点熟悉,但如果您能提供任何帮助,我将不胜感激。谢谢 因此,您知道可以返回所有数据并确定平均值。我猜这适用于一大组数据,在这些数据中,最好不要在每次希望检索和平均时返回整个节点 这取决

我来自php/mysql的背景,json数据和firebase查询对我来说还是相当陌生的。现在我在React Native中工作,我有一个数据集合,其中一个键存储一个整数。我想得到所有整数的平均值。我从哪里开始呢


我以前使用过Firebases snapshot.numChildren函数,所以我对这个json世界有点熟悉,但如果您能提供任何帮助,我将不胜感激。谢谢

因此,您知道可以返回所有数据并确定平均值。我猜这适用于一大组数据,在这些数据中,最好不要在每次希望检索和平均时返回整个节点

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

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

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
然后在更新项目时,运行元数据计算:

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

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

建议您在开始使用NoSQL时阅读:我喜欢您在这里的想法!我肯定会在未来的项目中使用它。对于这一个,我认为返回整个集合以找到平均值可能是理想的。这方面的最佳做法是什么?此时不关心性能问题在这种情况下,您只需返回整个节点,然后将所有值相加,然后除以项数。因此,对于要返回的对象,可能每个循环都有一个值。我如何获得我想要的所有值的总和?例如,获取item_one.number和item_two.number之和。