завершение функции http firebase
Это нормально практика ставить дополнительную логику в функцию опорного пункта по HTTPS, после того, как ответ был отправлен?
У меня есть функции, где это происходит:
- запись в базу данных Firebase DB
- Как только запись сделана, я отправляю ответ обратно (это где
res.status(200 / 500).send()
называется) - я ищу некоторые маркеры FCM в БД и отправляю push-сообщение (с точки зрения запрашивающего не имеет значения, успешно это или нет)
Я понимаю, что другая модель может быть, я перемещаю Шаг 3 в другую функцию триггера БД, чтобы сделать сообщение. Это привело бы к некоторой задержке, поскольку мне нужно было бы дождаться срабатывания этой функции триггера DB.
Мой вопрос: Безопасно ли добавлять дополнительную логику в функцию HTTPS после ответ отправлен, или Firebase может начать очистку / завершение моей функции уже?
1 ответ:
огнемет здесь
Хотя ваша отправка сообщений FCM (в шаге 3) может часто работать, это ненадежно. Нет никакой гарантии, что функция HTTP-триггера будет продолжать работать после отправки ответа.
Именно по этой причине документация Firebase гласит:
Функции HTTP синхронны, поэтому вы должны отправить ответ как можно быстрее и отложить работу с использованием базы данных реального времени.Итак, в в вашем случае, в документации явно сказано, чтобы поместить отправку уведомления в функцию, запускаемую базой данных.