我正在写一个有角度的应用程序。我有两个服务(auth服务)和(注册服务)。我的注册服务将用户数据(如姓名和电子邮件)写入firestore,而我的身份验证服务(从注册中获取电子邮件和密码)在我的注册服务将用户数据写入firestore后创建了一个用户帐户。这应该是一个相对简单的过程。问题是,我的authservice设法创建一个用户帐户,但我的注册服务不写入数据库。当我评论对auth服务的调用时,注册服务设法写入数据库。
验证服务
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)
})
现在两个服务都能正常工作,但是当调用auth服务时注册服务不起作用。
我到处搜索但没有解决方案。
这是我对这两项服务的呼吁
this.rSERVICE.saving(registeredUser);
this.authService.signUpUser(registeredUser);
答案 0 :(得分:0)
由于注册是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); });