FireStore避免手动映射. setdata()



我有一个问题,是否有可能避免使用FireStore的setData()方法进行手动映射,而是传递一个完整的对象?

例如:

func startTimeTracking(timeTracking: TimeTracking) {
db.collection("timetracking").document().setData(["productionId" : timeTracking.productionId, "employeeId" : timeTracking.employeeId, "taskType" : timeTracking.taskType, "status" : timeTracking.status, "timestampStart" : FieldValue.serverTimestamp(), "timestampStop" : nil])
}

伪:

func startTimeTracking(timeTracking: TimeTracking) {
db.collection("timetracking").document().setData(timeTracking)
}

感谢您的支持。

最好

您需要扩展Firestore的某些方面来提供此功能。setData()DocumentReference方法,因此可以扩展DocumentReference

extension DocumentReference {
func setData(with object: TimeTracking) {
self.setData([
"productionId": object.productionId,
"employeeId": object.employeeId
])
}
}

用法:

struct TimeTracking {
let productionId: String
let employeeId: String
}
let tt = TimeTracking(productionId: "abc", employeeId: "xyz")
Firestore.firestore().collection("timetracking").document().setData(with: tt)

这个扩展显然只处理单一类型,而不处理setData()的所有过载,其中包括额外的参数和完成处理程序。但是如果你需要的话,计算这些是很容易的。

最新更新