0

关于 Firestore 的菜鸟问题。我是 firebase 新手,我正在创建一个简单的应用程序,但无法在我的仪表板上显示配置文件名称或任何子集合,唯一显示的是电子邮件地址。

登录和注册没有问题,因为数据已经存储在 firestore 数据库中。只有我的仪表板是我无法显示子集合内的任何内容的问题。

控制台日志也没有问题,它向我显示了用户 ID 和子集合列表。它没有显示在我的仪表板上。这是示例代码。

     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>
    )
  }
};

名。姓氏,生物显示空白。我不知道我做得对不对。任何帮助将非常感激。先感谢您。

4

1 回答 1

0

get()方法是异步的并返回一个Promise.

当这个 Promise 被实现时,它的结果被传递给函数中的成功处理程序then()

因此,您需要执行以下操作:

 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 });
       }
    })      
于 2020-03-15T08:49:08.267 回答