Как использовать angular с функцией облачной пожарной базы в localhost - PullRequest
0 голосов
/ 16 февраля 2019

У меня проблема с использованием Angular с функциями firebase в localhost.Все, что я хочу, - это если пользователь удалит свою учетную запись, тогда функция firebase должна что-то отреагировать (например, удалить все вещи удаленного пользователя в базе данных firestore db).Например:

Угловой:

public deleteAccount(): Promise<void> {
    return this.angularFireAuth.auth.currentUser.delete().then(() => {

      const test = this.angularFireFunctions.httpsCallable('httpFunction');
      test(null).subscribe((response) => {
        debugger;
      }, (error) => {
        debugger;
      });
    }).catch((error) => {
      this.uiService.showSnackBar(error.message, 'error-snackbar');
    });
  }

Функция:

export const httpFunction = functions.https.onRequest((req, res) => {
  cors(req, res, () => { // need cors, because of error in console
    return functions.auth.user().onDelete((user: admin.auth.UserRecord) => {
      return res.status(200).send(user.uid);
    });
  });
});

Но даже если я использую такой код только для тестирования, после удаления пользователя естьзапрос к httpFunction, и все в порядке, но статус все время находится в состоянии ожидания.

Во-вторых, в консоли firestore (в журналах для раздела функций) есть такая информация:

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

" Выполнение функции заняло 60002 мс, завершено со статусом: 'timeout' '

Эта учетная запись является бесплатной, и я думаю, что это сообщение является только предупреждением, но в любом случае, у вас есть какие-либо идеи, как правильно использовать onDelete в функции облачного пожарного хранилища?

1 Ответ

0 голосов
/ 20 февраля 2019

Я настоятельно рекомендую вам прочитать документацию Firebase о фоновых функциях / триггерах.onUserDeleted является триггером.

https://cloud.google.com/functions/docs/concepts/events-triggers

**** Вот TL; DR: ****

Вам не нужно запускать фонфункционирует вручную через вызов https, потому что они запускаются автоматически в ответ на события.Фоновые функции работают, экспортируя их из точки входа (index. (Ts | js)).

Итак, просто экспортируйте свою функцию из index. (Ts | js) и разверните ее.

export const onUserDeleted = functions.auth.user().onDelete((user: admin.auth.UserRecord) => {
      // Delete user in Firestore
      // Don't forget to return a Promise!
    });
  });
});

onUserDeleted будет запущен в ответ на удаление пользователя.В вашем случае, вызывая this.angularFireAuth.auth.currentUser.delete() в Angular.

Вы можете проверить это, просто используя console.log в обратном вызове onUserDeleted и просмотрев его в консоли firebase под функциями -> logs.

...