Функции Firebase: поддержка глобальных переменных в функциях - PullRequest
0 голосов
/ 07 октября 2018

Я хочу кэшировать самые последние записи (скажем, за последние 24 часа) в функции http firebase.В функции http firebase (скажем, fetchLastXRecords) я ищу запись в кеше (определенную глобальную переменную для хранения записей), если не найдено извлечение из базы данных и установка кеша.

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

Что может быть хорошим подходом для обновления записей в кэше?Может быть, я могу вызвать функцию кэширования http firebase и передать обновленные записи?или я могу сохранить обновленные записи в базе данных, а затем функцию кэширования, посмотреть в базе данных и обновить записи в кэше?

1 Ответ

0 голосов
/ 07 октября 2018

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

  1. Под нагрузкой для запуска ваших функций будет выделено несколько экземпляров сервера.Эти экземпляры сервера не имеют общего состояния.
  2. Каждая из ваших функций развернута на разных экземплярах сервера.Две функции никогда не будут запускаться на одном и том же экземпляре сервера.

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

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