Я делаю веб-приложение на Angular 6, где пользователи могут создавать учетные записи.Внутри формы они дают свои имена, пол, рождение и т. Д. Я хотел бы сохранить эти данные в Firestore при создании новой учетной записи.
Прямо сейчас, учетная запись создана правильно, ноданные не сохраняются в Firestore.
Я попытался установить функцию как async
и вызов для добавления данных в Firestore как await
, но это не сработало.Я думал, что строка сохранения данных в Firestore игнорируется.
Моя пользовательская модель:
export interface User {
firstName: string;
secondName: string;
firstSurname: string;
secondSurname: string;
emailAddress: string;
}
Когда вы закончите форму и нажмете Отправить:
onFormSubmit() {
const password = this.personalInformation.get('password').value;
const user: User = {
firstName: this.personalInformation.get('firstName').value,
secondName: this.personalInformation.get('secondName').value,
firstSurname: this.personalInformation.get('firstSurname').value,
secondSurname: this.personalInformation.get('secondSurname').value,
emailAddress: this.personalInformation.get('emailAddress').value
};
this.authService.register(user, password)
.then(res => {
}, err => {
console.log(err);
});
}
Метод создания пользователя и добавления данных в Firestore:
register(user: User, password: string) {
return new Promise<any>((resolve, reject) => {
this.afAuth.auth.createUserWithEmailAndPassword(user.emailAddress, password)
.then(res => {
Object.assign(user, {
'dateOfCreationAccount': new Date(res.user.metadata.creationTime),
'lastSignInTime': new Date(res.user.metadata.lastSignInTime)
});
// Add user to firestore
this.firestoreService.addUser(res.user.uid, user);
// Send verification email
this.sendVerificationEmail();
// Logout user
this.logout();
resolve(res);
}, err => reject(err));
});
}
Тот же метод с async
/ await
:
register(user: User, password: string) {
return new Promise<any>((resolve, reject) => {
this.afAuth.auth.createUserWithEmailAndPassword(user.emailAddress, password)
.then(async res => {
Object.assign(user, {
'dateOfCreationAccount': new Date(res.user.metadata.creationTime),
'lastSignInTime': new Date(res.user.metadata.lastSignInTime)
});
// Add user to firestore
await this.firestoreService.addUser(res.user.uid, user);
// Send verification email
this.sendVerificationEmail();
// Logout user
this.logout();
resolve(res);
}, err => reject(err));
});
}
Метод добавления данныхв Firestore:
addUser(uid: string, data: User) {
this.usersCollection.doc(uid).set(data);
}
Кажется, что строка this.firestoreService.addUser
игнорируется.Идея состоит в том, чтобы сразу же сохранить данные пользователя в Firestore после создания его учетной записи.