【发布时间】:2021-07-01 05:24:03
【问题描述】:
我在这里有获取数据代码,但我不明白在不将 ID 设置为文档 ID 的情况下如何删除文档。我在这里学习本教程。 https://medium.com/swift-productions/swiftui-easy-to-do-list-with-firebase-2637c878cf1a 我假设我需要在数据映射中这样做,但我不明白如何使用这段代码。我想从 SwiftUI 列表中删除一个待办事项,并删除它的整个 Firestore 文档。
func fetchData() {
db.collection("todos").addSnapshotListener { (querySnapshot, error) in
guard let documents = querySnapshot?.documents else {
print("No documents")
return
}
self.todos = documents.map { (QueryDocumentSnapshot) -> Todo in
let data = QueryDocumentSnapshot.data()
let todoDetails = data["todo"] as? String ?? ""
return Todo(todoDetais: todoDetails)
}
}
}
查看模型
struct Todo: Codable, Identifiable {
var id: String = UUID().uuidString
var todoDetais: String?
}
【问题讨论】:
-
为什么不想使用文档 ID?您将需要某种标识符。最好的办法是在 Firestore 文档中添加所需的 UID。然后,当首先删除时,您必须获取该文档 ID,然后删除,这使其成为一个两步过程。我建议在模型中添加文档 ID,例如
return Todo(todoDetais: todoDetails, firestoreID: docID),以便我可以在需要时访问它。 -
我仍然不确定这如何将视图模型的 ID 映射到 Firestore 的文档 ID。 @Dharmaraj
标签: firebase firebase-realtime-database google-cloud-firestore swiftui