【发布时间】:2022-01-05 03:49:10
【问题描述】:
我正在寻找名为 users 的集合的数据,该集合的文档 ID 为登录用户的 uid。此外,这些文档包含一些数据和一个名为 posts 的子集合。 看起来像 -
所以现在,我需要将所有四 (4) 个文档连同 posts 集合数据一起获取,以便我可以显示它。
我的方法 - (这里我获取了文档 ID - 图片 ID 的中间部分)
// Fetching Firestore Users Document IDs
const [userDocs, setUserDocs] = React.useState([]);
React.useEffect(() => {
try {
const data = firestore.collection('users')
.onSnapshot(snap => {
let docIDs = [];
snap.forEach(doc => {
docIDs.push({id: doc.id});
});
setUserDocs(docIDs);
})
}
catch(err) {
console.log(err);
}
}, [])
现在,我尝试使用以下方式获取整个数据(这是行不通的)
// Fetching Firestore Posts Data
const [postData, setPostData] = useState([]);
React.useEffect(() => {
try {
userDocs.map(data => {
const data = firestore.collection('users/'+currentUser.uid+'/posts')
.onSnapshot(snap => {
let documents = [];
snap.forEach(doc => {
documents.push({...doc.data(), id: doc.id});
});
setPostData(documents);
})
})
}
catch(err) {
console.log(err);
}
}, [])
最后,我应该得到 postData 数组,我可以将它映射到我的卡片组件上,以将所有发布的图像和标题呈现到 UI。
我不确定这是否是实现我在这里所做的正确方法,请帮助我纠正这个错误,如果有更微妙和简单的方法,请告诉我。谢谢。
【问题讨论】:
-
您是想设置一个监听器(使用
onSnapshot)还是只想一次获取所有这些文档(例如使用get())?
标签: reactjs firebase google-cloud-firestore