首页 > 解决方案 > 使用 Firebase 函数处理传入数据

问题描述

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

假设每 15 分钟就有一个新值添加到我的数据库中。我想使用 Firebase 函数自动提取某些值(最大值、最小值、24 小时高/低等),因为我想在我的网站上显示这些值。这似乎是个好主意,因为通过这种方式,所有工作都将在后端完成,web-js-code 只会从我的数据库中获取值,而不是无休止地查询。

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

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

在此处输入图像描述

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

标签: javascriptfirebasefirebase-realtime-database

解决方案


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

在云函数中,您可以存储全局变量,它们将一直存在到函数超时。因此,如果您的函数有一段时间没有被调用,系统会破坏您的函数,并且您会丢失变量。

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


推荐阅读