Firebase / Firestore无法正确刷新数据

时间:2019-01-11 21:20:09

标签: firebase react-native google-cloud-firestore expo

我正在使用具有react-native / expo的应用程序,并尝试从Firestore中获取数据。

在我的数据库结构中,我有一个名为“用户”的集合。该集合保存用户文档。每个用户都有一个子集“ userEvents”,其中包含对他们已订阅事件的引用

我可以从集合中获取数据,但是如果发生一些更改,我的屏幕将无法正确刷新。

我通过以下方式获取数据:

onCollectionUpdate(uid){
this.setState({events: '', isLoading: true})
  let userCollection = firebase.firestore().collection("users").doc(uid).collection("uEvents");
  userCollection.onSnapshot(snapshot =>{   
    Promise.all(
      snapshot.docs.map(snap =>{
        return new Promise((resolve, reject)=>{
          const data = snap.data()
          const visited = data.visited

          data.eventRef.onSnapshot(doc =>{
            let eventData = doc.data()
            let object ={
              id: doc.id,
              visited: visited,
              title: eventData.title,
              picture: eventData.picture,
              password: eventData.password,
              eventCode: eventData.eventCode,
              description: eventData.description
            }
            resolve(object)
          })
        })
      })
    ).then(data =>{
      this.setState({events: data, isLoading: false})
    }).catch(error =>{
      console.log(error)
    })
})
}

并使用以下命令调用函数:

    this.unsubscribe = this.onCollectionUpdate(this.state.currentUser.uid)

当我从uEvent集合中删除事件时,最后一个项目始终消失,直到我重新打开应用程序。如果我添加一个新事件,则最后一项总是显示两次。

如果有人可以帮助我或给我提示

0 个答案:

没有答案