我曾經有一個具有以下結構的檔案:
舊檔案:
members: ['userId1', 'userId2', 'userId3']
然后我撰寫了一個查詢來檢索與用戶相關的所有檔案:
const docsSnapshot = await getDocs(query(
collection(db, 'organisations'),
where('members', 'array-contains', user.uid)
))
這很好用,但現在我需要存盤用戶名以及:
members: [{ id: 'userId1', name: 'John Smith' }, { id: 'userId2', name: 'Jane Smith' }]
我面臨的挑戰是我不確定如何構造一個查詢,該查詢將產生與第一個相同的結果 - 即,我如何檢索任何物件具有id對應于user.uid.
我嘗試使用:where('members.id', '==', user.uid) 但這沒有用。
可以構造查詢來執行此操作嗎?
uj5u.com熱心網友回復:
Firestore 不擅長這類查詢...我會考慮將您的成員陣列重組為一個以 user.id 作為鍵的物件。
members : {
userId1: { name: "fred" },
userId2: { name: "martha" }
}
另一種方法,也許更接近 Firestore 的“希望”您這樣做的方式,是members為每個成員創建另一個子集合,其中 doc.id 設定為 user.id。
這種方法還允許您輕松地向每個成員添加更多資料,并具有對不僅僅依賴于 user.id 的成員進行查詢的額外好處。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/471227.html
標籤:javascript 火力基地 谷歌云火库
上一篇:顯示頁眉和隱藏頁腳減慢
