firebase - Firebase/Firestore 未正确刷新数据
问题描述
我正在使用 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 集合中删除一个事件时,最后一个项目总是消失,直到我重新打开应用程序。如果我添加一个新事件,最后一个项目总是显示两次。
如果有人可以帮助我或给我一个提示,那就太好了
解决方案
推荐阅读
- python - 如何使用 Beautiful Soup 从 href 标签下的标签中提取字符串?
- office365 - OneNote 目前无法同步您的笔记。我们会继续努力。(错误代码:0xE0000007 9wgyi)
- android - 哪个分区或路径只有系统应用程序可以访问/读取android中的数据
- firebase - 我正在使用 Flutter 开发一个药物递送应用程序,但在购物车屏幕中遇到了一些问题
- react-native - FlatList 自动更新或重新渲染本机反应
- azure-sql-database - 使用 POLYBASE 将数据从 Azure SQL db 复制到 Azure Synapse 时保留空字符串
- kotlin - 我们可以制作一个模板函数来合并任意两个 T 对象吗?
- python - m4a文件中的帧字节流应该转换成什么数据类型?
- flutter - 如何使用预填充的 sqlite 数据库并从 Flutter 中的表中获取数据?
- javascript - 如何在 Next.js 中获取仅限 http 的 cookie 值?