使用Firebase功能处理传入数据

时间:2018-11-01 08:47:16

标签: javascript firebase firebase-realtime-database

我正在使用Firebase实时数据库存储测量的天气数据。 (即温度,气压等)

假设每15分钟将一个新值添加到我的数据库中。我想使用Firebase Functions自动提取某些值(最大值,最小值,24h高/低等),因为我想在我的网站上显示这些值。这似乎是个好主意,因为这样,所有工作都将在后端完成,并且Web js代码将仅从我的数据库中获取值,而不是无休止地进行查询。

现在,我不是Firebase Functions的专家,尝试让Firebase读取和比较所有这些值时遇到了一些麻烦。我的数据库树看起来像这样:Firebase DB-Tree

想法是使用.onWrite侦听'weather/temps'中的新条目,并将每个新条目与'history/extrema/maximum/temp'进行比较。现在,我真的不知道如何在将更新其值的函数中读取当前最大值。到目前为止,我的代码如下:

enter image description here

如何从数据库的任何位置读取函数中的数据并将其用于比较等?

1 个答案:

答案 0 :(得分:0)

您需要异步获取“历史/极值/最大/温度”,然后进行比较和设置。但这将是一项昂贵的操作,并且需要时间!

在云函数中,您可以存储全局变量,它们将保留到函数超时为止。因此,如果一段时间未调用函数,系统将破坏函数,并释放变量。

一个好的方法是,如果全局变量假设“ maxTemp”为空,则读取“ history / extrema / maximum / temp”并将其存储在全局变量中,然后继续与新值进行比较,如果它更高,则同时更新“ maxTemp”变量和“ history / extrema / maximum / temp”。