Мне нужна помощь, чтобы исправить ошибку в моем коде, которая появляется на моей консоли. хотя он не появляется на экране, и я все еще могу отредактировать поле и сохранить в базе данных, но каждый раз, когда он монтируется, появляется одна и та же ошибка. Я попытался поставить Try / catch из-за ошибки отклонения обещания, но ошибка типа все еще там. Я не знаю, что не так с моим кодом.
TypeError: undefined is not an object (evaluating 'dbUser.firstname')
TypeError: undefined is not an object (evaluating '_dbUser$avatar.uri')
пример кода ниже
MountFirestore = async () => {
try {
const curUser = firebase.auth().currentUser;
const { email } = curUser;
const dbUser =
await firebase
.firestore()
.collection('users')
.doc(curUser.uid)
.get()
.then(doc => {
if (!doc.exists) {
console.log('No such document!');
} else {
console.log(doc.id, doc.data());
const {
firstname,
lastname,
email,
avatar: {uri, mime, dateModified}} = doc.data();
this.setState({
firstname,
lastname,
email,
avatar: {uri, mime, dateModified},
loading: false
})
}
return doc;
})
.catch(err => {
console.log('Error getting document', err);
});
const {
firstname, lastname,
avatar: {uri, mime, dateModified}} = dbUser;
this.setState({
firstname,
lastname,
email,
avatar: {uri, mime, dateModified},
loading: true
});
}
catch (error) {
console.log(error.toString(error));
}
};
пример ошибки консоли изображение консоли
отредактировано:
I нашел решение. для ошибки типа не определено. Я удалил const dbuser и settate. Выполните это, как показано ниже, чтобы устранить все ошибки.
MountFirestore = async () => {
try {
const curUser = firebase.auth().currentUser;
await firebase
.firestore()
.collection('users')
.doc(curUser.uid)
.get()
.then(doc => {
if (!doc.exists) {
console.log('No such document!');
} else {
console.log(doc.id, doc.data());
const {
firstname,
lastname,
email,
avatar: {uri, mime, dateModified}} = doc.data();
this.setState({
firstname,
lastname,
email,
avatar: {uri, mime, dateModified},
loading: false
})
}
return doc;
})
.catch(err => {
console.log('Error getting document', err);
});
this.setState({loading: true})
}
catch (error) {
console.log(error.toString(error));
}
};