我正在使用具有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集合中删除事件时,最后一个项目始终消失,直到我重新打开应用程序。如果我添加一个新事件,则最后一项总是显示两次。
如果有人可以帮助我或给我提示