在 Swift 中从 Firestore 中获取文档列表
Posted
技术标签:
【中文标题】在 Swift 中从 Firestore 中获取文档列表【英文标题】:Fetching List of Documents from Firestore in Swift 【发布时间】:2021-07-26 04:00:12 【问题描述】:我有一个文档 ID 列表,我想在我的 swift 项目中提取这些文档。出于某种原因,没有返回任何内容。
示例文档:
示例模型:
struct MyModel: Identifiable, Codable, Hashable
@DocumentID var id: String? = UUID().uuidString
var title: String
var content: String
示例代码:
self.db
.collection("examplePath")
.whereField("id", in: ["1D9815E9-54D4-468E-BH23-791D2AE82DA8", "8D9815E9-54D4-468E-BH23-791D2AE82DA8"])
.addSnapshotListener querySnapshot, error in
guard let documents = querySnapshot?.documents else
print("no documents \(String(describing: error))")
return
print(documents.compactMap (queryDocumentSnapshot) -> MyModel? in
return try? queryDocumentSnapshot.data(as: MyModel.self))
【问题讨论】:
【参考方案1】:要将in
运算符与文档ID 一起使用,您可以使用FieldPath.documentID()
:
self.db
.collection("examplePath")
.whereField(FieldPath.documentID(), in: ["1D9815E9-54D4-468E-BH23-791D2AE82DA8", "8D9815E9-54D4-468E-BH23-791D2AE82DA8"])
【讨论】:
谢谢。当我尝试这个时,Xcode 告诉我:'Type 'Firestore' has no member 'FieldPath'' @neo 你可以试试FieldPath.documentID()
吗?
Xcode 接受了这一点,但我仍然没有得到任何东西。我什至尝试过: .whereField(FieldPath.documentID(), isEqualTo: "1D9815E9-54D4-468E-BH23-791D2AE82DA8") - 但我没有得到任何回报。当我删除 whereField 时,所有项目都正确返回。我已经复制并粘贴了 Firestore 中显示的 ID,但没有任何帮助
另一件事可能会有所帮助:当我输出没有 whereField 的结果时,我将其作为对 docID 的引用:[MyApp.MyModel(_id: FirebaseFirestoreSwift.DocumentID以上是关于在 Swift 中从 Firestore 中获取文档列表的主要内容,如果未能解决你的问题,请参考以下文章
无法在 SwiftUI 按钮视图中从 Cloud Firestore 获取数据
在 Firebase 函数中从 Firestore 获取数据时遇到问题
Swift - Firebase 在 Firestore 中获取 Facebook 好友 UID