не могу записать в базу данных firestore перед угловым приложением аутентификации firebase - PullRequest
0 голосов
/ 17 мая 2018

Я пишу угловое приложение. У меня есть две службы (служба авторизации) и (служба регистрации). Моя служба регистрации записывает пользовательские данные, такие как имя и адрес электронной почты, в firestore, в то время как моя служба авторизации (берет электронную почту и пароль из регистрации) создает учетную запись пользователя после того, как моя служба регистрации записала данные пользователя в firestore. Это должен быть относительно простой процесс. Проблема в том, что мой authservice удается создать учетную запись пользователя, но моя служба регистрации не записывает в базу данных. Когда я комментирую звонок в службу авторизации, службе регистрации удается записать в базу данных.

Автосервис

this.afs.auth.createUserWithEmailAndPassword(user.email,user.pass)

Служба регистрации

this.afs.collection('path').add({
  firstName: rUser.firstName,
  lastName: rUser.lastName,
  email: rUser.email
}).catch(function (error) {
  console.log(error)
})

Теперь обе службы четко работают, но служба регистрации не работает, когда вызывается служба авторизации.

Я искал везде, но решений не найдено.

Вот мой звонок обоим службам

this.rSERVICE.saving(registeredUser);
this.authService.signUpUser(registeredUser);

1 Ответ

0 голосов
/ 18 мая 2018

Поскольку регистрация - это задача async, убедитесь, что эта задача успешно выполнена, прежде чем вызывать задачу регистрации.

Один из способов реализации - заставить функцию saving вернуть promise и вызвать signUpUser внутри его .then() блока.Примерно так:

registration.service

// saving function return a promise
  saving(user: User): Promise<boolean> {
    return new Promise(
        (resolve) => {
            this.afs.auth.createUserWithEmailAndPassword(user.email, user.pass)
                .then(() => { resolve(true); })
                .catch((error) => {
                  console.log(error);
                  throw new Error("Some error message here...");
                })})
  }

Использование услуг

this.rSERVICE.saving(registeredUser)
    .then(() => { this.authService.signUpUser(registeredUser); })
    .catch(error => { console.log(error); });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...