我希望獲取名為users的集合的資料,其中包含具有登錄用戶 uid id 的檔案。此外,這些檔案包含一些資料和一個名為posts的子集合。看起來像 -

所以現在,我需要將所有四 (4) 個檔案連同帖子集合資料一起獲取,以便我可以顯示它。
我的方法 - (在這里我獲取了檔案 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。
我不確定這是否是實作我在這里所做的事情的正確方法,請幫助我糾正這個錯誤,如果有更微妙和簡單的方法來做到這一點,請告訴我。謝謝你。
uj5u.com熱心網友回復:
我試圖獲取整個資料
查看您為獲取“整個資料”(即第二個片段)而撰寫的代碼,似乎在獲取檔案時您不需要將post檔案鏈接到父檔案。換句話說,我知道您想獨立于檔案獲取所有集合。userpostpostsuser
因此,您可以使用Collection Group 查詢。
如果您需要,對于postCollection Group 查詢回傳的每個檔案,要獲取父user檔案(例如顯示作者姓名),您可以按照此SO answer 中的說明進行操作,即使用parent屬性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/368329.html
標籤:反应 火力基地 谷歌云firestore
