Обрабатывать входящие данные с помощью функций Firebase - PullRequest
0 голосов
/ 01 ноября 2018

Я использую базу данных Firebase Realtime для хранения данных измерений погоды. (т.е. температура, давление воздуха и т. д.)

Допустим, каждые 15 минут к моей базе данных добавляется новое значение. Я хочу использовать Firebase Functions для автоматического извлечения определенных значений (максимумы, минимумы, 24-часовой максимум / минимум и т. Д.), Потому что я хочу отображать эти значения на моем веб-сайте. Это казалось хорошей идеей, потому что таким образом вся работа будет выполняться на серверной части, а код web-js будет просто извлекать значения из моей базы данных, а не делать бесконечные запросы.

Теперь я не специалист по функциям Firebase и столкнулся с некоторыми проблемами, пытаясь заставить Firebase прочитать и сравнить все эти значения. Моя БД выглядит примерно так: Firebase DB-Tree

Идея состоит в том, чтобы использовать .onWrite для прослушивания новых записей, скажем, 'weather/temps' и сравнения каждой новой записи с 'history/extrema/maximum/temp'. Теперь я не знаю, как читать текущее максимальное значение внутри функций, которые обновляют его значение. Пока мой код выглядит так:

enter image description here

Как я могу читать данные в моей функции из любой точки моей БД и использовать их для сравнения и т. Д.?

1 Ответ

0 голосов
/ 01 ноября 2018

Вам нужно асинхронно получить «history / extrema / Maximum / Temp», а затем сравнить и установить. Но это будет дорогостоящей операцией и займет время!

В облачных функциях вы можете хранить глобальные переменные, они будут действовать до истечения времени ожидания функции. Поэтому, если ваша функция не вызывается в течение некоторого времени, система уничтожает вашу функцию, и вы теряете переменную.

Таким образом, хороший способ сделать это, если глобальная переменная, скажем, «maxTemp» равна нулю, прочитать «history / extrema / Maximum / Temp» и сохранить ее в глобальном переменной, а затем перейти к сравнению с новым значением, а если оно выше, то обновите также переменную «maxTemp» и «history / extrema / Maximum / Temp».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...