#angular #angularfire
Вопрос:
Я использую аутентификацию firebase в своем проекте angular, я назначаю роль пользователям
вот мой метод подписи
SignIn(email, password) {
return this.afAuth.signInWithEmailAndPassword(email, password)
.then((result) => {
this.ngZone.run(() => {
this.router.navigate(['/user'], {
skipLocationChange: true
})
});
this.SetUserData(result.user);
}).catch((error) => {
console.log(`${error}`, '', 'error')
})
}
SetUserData(user) {
const userRef: AngularFirestoreDocument < any > = this.afs.doc(`users/${user.uid}`);
const userData: User = {
uid: user.uid,
email: user.email,
emailVerified: user.emailVerified,
role: {
admin: user.role.admin,
member: user.role.member
}
}
return userRef.set(userData, {
merge: true
})
}
Когда пользователь пытается войти в систему, он выдает ошибку типа Ошибка: Не удается прочитать свойство «администратор» неопределенного. Если вы проверите firestore,
{
emailVErified: true,
role: {
admin: true,
member: false
},
uid:'xxxxxxxxxxxxxxxxxxxxxxxxxx'
}
Комментарии:
1. Что вы видите, если вы console.log(пользователь) внутри функции setUserData (…)?
2. @DKidwell Ничего не отображается на консоли
3. Это кажется странным, вы не видите, как журналы вашей консоли отображаются в консоли браузера? Попробуйте добавить эту строку в самое начало setUserData(…), console.log(«мой объект пользователя => «, пользователь);
4. Похоже, в firebase есть статическая информация о пользователе, которая не позволяет нам добавлять пользовательские поля,