簡體   English   中英

如何在 Swift 中沒有 documentID 的情況下在 firestore 中獲取子集合?

[英]How to fetch subcollections in firestore without documentID in Swift?

我想訪問 firestore 數據庫中用戶數據文檔的視頻子集合部分:

func fetchRecentVideos(ofArtist artistName: String) async -> [VideoModel] {
        let usersRef = db.collection("users")
        let userDocs = try! await usersRef.whereField("artistName", isEqualTo: artistName).getDocuments()
        
        if userDocs.count != 1 {
            print("snapshot.count was not 1!!!!")
        }
        
        userDocs.documents[0].collection("videos")
        
    }

我已經看到很多帖子和文檔顯示了如何通過明確說明子集合的路徑來訪問子集合:

db.collection("users/\(documentIDofInterest)/videos") 

這將是我將使用的方法,但我不打算使用 documentID,因此我必須首先通過使用 whereField() 方法的查詢來訪問特定文檔。 但是,這很快就會變得冗長。 此外,我最終得到了一個 QueryDocumentSnapShot,我還需要對其進行轉換,以便能夠訪問其中包含的子集合。 有沒有我想念的更簡單的方法?

此外,我特別不想使用 documentID,因為我將 Firestore 設置為為我的文檔生成 AutoID 以提高安全性。 但是,因此,我這樣做是否讓事情變得困難? 然后我應該用用戶名或類似的東西重命名我的文件嗎?

根據文檔,明確提到您可以通過查詢集合中的文檔來通過一個請求檢索文檔。 例如,您可以使用 where() 查詢所有滿足特定條件的文檔,然后使用 get() 檢索結果,這是您已知的解決方案。 我認為沒有比這更好的解決方案了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM