如何获取子集合在firestore没有文档id在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()来检索结果,这是已知的解决方案。我认为没有比这更好的解决办法了。

最新更新