Сколько времени может потребоваться для запуска триггера auth onCreate

#firebase #firebase-realtime-database #firebase-authentication #google-cloud-functions

# #firebase #firebase-realtime-database #firebase-аутентификация #google-cloud-функции

Вопрос:

В моем приложении мой триггер auth onCreate () создает некоторые данные RTDB для каждого пользователя (использует транзакцию, чтобы она не перезаписывалась).

Итак, когда пользователь проходит аутентификацию, я намерен загружать его до тех пор, пока его данные не появятся в БД.

Однако есть история о том, что для вступления в силу триггера может потребоваться несколько часов или дней, и я не уверен в тех случаях, когда это может произойти.

Безопасно ли для клиента ждать, пока триггер onCreate auth выполнит свою работу с базой данных? Или я должен вручную вызвать функцию CF для создания необходимых данных?

Комментарии:

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

2. Но как насчет того, что этот триггер занимает так много времени? Применяется только к триггерам «превышения»?

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

4. Хм… Его сложно сравнить, когда в моих тестах может никогда не произойти, чтобы для запуска триггера потребовались часы или дни (и, как указано в вопросе, клиент будет загружать данные, которые будут созданы)… Я только что нашел в пакете RN firebase (await auth.signInWithCredential(googleCredential)).additionalUserInfo?.isNewUser . Если true, я мог бы вызвать CF для получения аналогичного эффекта триггера. Однако, допустим, что приложение запускается перед вызовом CF, поэтому триггер может работать как резервный. Но эта задержка запуска все еще туманна.

5. Вы не должны беспокоиться о том, что этот триггер может не сработать. Гарантируется, что он будет вызван хотя бы один раз. Триггеры облачных функций были бы в основном бесполезны, если бы они не выполнялись надежно. Прочитайте это: cloud.google.com/functions/docs/concepts /…

Ответ №1:

Это безопасно, дерзайте!

Но если вам нужно больше энергии, используйте это:

 const runtimeOpts = {
  timeoutSeconds: 300,
  memory: '1GB'
}
exports.myFunction = functions.database.ref('/users')
  .runWith(runtimeOpts)
  .onCreate((snapshot, context) => {
     //
   });
 

https://firebase.google.com/docs/functions/manage-functions#set_timeout_and_memory_allocation

Комментарии:

1. Я не понимаю, как это предложение кода применимо здесь… пользователь напрямую не создает данные в RTDB (мне не нравится делать записи на клиенте, я передаю почти все в CF, чтобы иметь лучший контроль над ним, поскольку это приложение, поэтому пользователю может потребоваться некоторое время для обновления приложения до более новой версии)