我需要帮助,我将Firebase用作后端,将Ionic 4用作前端。
我在控制台上出现错误,第一次打开/午餐应用程序时,我收到了无法在控制台上读取'uid'为null的属性。
我阅读了一些相关的解决方案,但找不到能解决我问题的解决方案。
以下是我在应用中实现代码后的代码:
initializeApp() {
this.afAuth.auth.onAuthStateChanged(user => {
const userId = user.uid;
this.db.doc(`accounts/${userId}`).valueChanges().pipe(
take(1)
).subscribe(userData => {
const role = userData['role'];
if (role == 'USER') {
console.log('we got a customer user');
this.router.navigateByUrl('/tabs/home')
} else if (role == 'VENDOR') {
console.log('we got a seller user');
this.router.navigateByUrl('/vendor-tabs/home-vendor')
}
})
})
}
答案 0 :(得分:1)
任一用户登录和注销后,将调用身份验证状态更改侦听器。 user
如果未登录,则为null。这意味着您必须先检查user
是否为真,然后才能访问其上的属性。
this.afAuth.auth.onAuthStateChanged(user => {
if (user) {
// user is signed in
const userId = user.uid;
}
else {
// user is signed out - can't use properties of user.
}
}
答案 1 :(得分:0)
这是我为摆脱'uid'null的无法读取属性所做的事情。
this.afAuth.auth.onAuthStateChanged(user => {
if (user) {
const userId = user.uid;
this.db.doc(`accounts/${userId}`).valueChanges().pipe(
take(1)
).subscribe(userData => {
const role = userData['role'];
if (role == 'USER') {
console.log('we got a customer user');
this.router.navigateByUrl('/tabs/home')
} else if (role == 'VENDOR') {
console.log('we got a seller user');
this.router.navigateByUrl('/vendor-tabs/home-vendor')
}
})
} else {
return of(null);
}
})