Pertanyaan noob tentang Firestore. Saya baru mengenal firebase dan saya membuat aplikasi sederhana tetapi tidak dapat menampilkan nama profil atau subkoleksi apa pun di dasbor saya, satu-satunya yang ditampilkan adalah alamat email.

Login dan signup tidak ada masalah karena data sudah tersimpan di database firestore. hanya dasbor saya masalahnya, saya tidak dapat menampilkan apa pun yang ada di dalam subkoleksi.

Log konsol tidak memiliki masalah juga menunjukkan kepada saya ID pengguna dan daftar subkoleksi. Itu tidak muncul di dasbor saya. Berikut adalah contoh kode.

     const curUser = firebase.auth().currentUser;
     const { email } = curUser;

     const dbUser =
      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, bio } = dbUser;
  this.setState({ firstname, lastname, bio, email });
 };


  render() {
     return (

     <View >
              <Text>
                 {this.state.firstname} {this.state.lastname}
              </Text>

              <Text>
                 {this.state.bio}
              </Text>

              <Text>
                 {this.state.email}
              </Text>
     </View>
    )
  }
};

Nama depan. nama belakang, dan bio ditampilkan kosong. Saya tidak tahu apakah saya melakukannya dengan benar. Bantuan apa pun akan sangat dihargai. Terima kasih sebelumnya.

0
code_error 15 Maret 2020, 11:26

1 menjawab

Jawaban Terbaik

get() metode asinkron dan mengembalikan Promise< /a>.

Ketika Janji ini dipenuhi, hasilnya diteruskan ke pengendali sukses di then() fungsi.

Oleh karena itu Anda perlu melakukan sebagai berikut:

 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, bio } = doc.data();
          this.setState({ firstname, lastname, bio, email });
       }
    })      
0
Renaud Tarnec 15 Maret 2020, 09:17