завершение функции http firebase


Это нормально практика ставить дополнительную логику в функцию опорного пункта по HTTPS, после того, как ответ был отправлен?

У меня есть функции, где это происходит:

  1. запись в базу данных Firebase DB
  2. Как только запись сделана, я отправляю ответ обратно (это где res.status(200 / 500).send() называется)
  3. я ищу некоторые маркеры FCM в БД и отправляю push-сообщение (с точки зрения запрашивающего не имеет значения, успешно это или нет)

Я понимаю, что другая модель может быть, я перемещаю Шаг 3 в другую функцию триггера БД, чтобы сделать сообщение. Это привело бы к некоторой задержке, поскольку мне нужно было бы дождаться срабатывания этой функции триггера DB.

Мой вопрос: Безопасно ли добавлять дополнительную логику в функцию HTTPS после ответ отправлен, или Firebase может начать очистку / завершение моей функции уже?

1 3

1 ответ:

огнемет здесь

Хотя ваша отправка сообщений FCM (в шаге 3) может часто работать, это ненадежно. Нет никакой гарантии, что функция HTTP-триггера будет продолжать работать после отправки ответа.

Именно по этой причине документация Firebase гласит:

Функции HTTP синхронны, поэтому вы должны отправить ответ как можно быстрее и отложить работу с использованием базы данных реального времени.

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