首页 > 解决方案 > 通过用户 id 获取 firestore 文档

问题描述

我正在尝试从我的“请求”集合中获取文档。请求uid与当前登录用户相同,在我获得要显示的数据后,但似乎没有收到文件,这是我所做的,this.state.requests是空的。


constructor() {
    this.state={
      requests:[]
    }

  }

  componentDidMount(){
    this.props.fetchUser();
    this.fetchRequests();
  }
  
  fetchRequests(){
    this.subscriber = firebase.firestore()
    .collection("requests").doc(firebase.auth().currentUser.uid).get().then(docs => {
      let requests = []
      docs.forEach(doc => {
        requests.push(doc.data())
      })
      this.setState({requests})
  })
}

deleteData(){
  firebase.firestore().collection("requests")
    .doc(firebase.auth().currentUser.uid).delete().catch
    ((error) => {
      alert(error)
      console.log(error)})
    Actions.Home();   
}

buildPanels() { 
  if (this.state.requests.length !== 0) {
    return this.state.requests.map((req, idx) => {
        return <View key={idx} style={styles.panel}>
        <View style={{flex: 1}}>
            <View style={styles.panelRow}>
              <Text style={styles.panelText}>Name</Text>
              <Text style={styles.panelText}>{req.name}</Text>  
            </View>
            <View style={styles.panelRow}>
              <Text style={styles.panelText}>Blood Type</Text>
              <Text style={{flex: 0.5}}>{req.golDarah}</Text>  
            </View>
                  <TouchableOpacity onPress={this.deleteData}>
                      <Text style={{color:color.red}}>End Request</Text>
                  </TouchableOpacity>
              </View>
            </View>
        </View>
    </View>
      });
  }
  else{
    return <View>
      <Text style={{fontSize: fontSize.regular + 1, color: color.red}}>you dont have request</Text>
    </View>
  }     
}

render(){
  return(
    {this.buildPanels()} 
  )
}

标签: javascriptreact-nativegoogle-cloud-firestore

解决方案


推荐阅读