Recat Native: TypeError: undefined не является объектом - PullRequest
0 голосов
/ 30 марта 2020

Мне нужна помощь, чтобы исправить ошибку в моем коде, которая появляется на моей консоли. хотя он не появляется на экране, и я все еще могу отредактировать поле и сохранить в базе данных, но каждый раз, когда он монтируется, появляется одна и та же ошибка. Я попытался поставить 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));
   } 
 }; 
...