the*_*ncs 1 firebase swift google-cloud-firestore
我在我的项目中使用 Firebase Cloud Firestore 并创建了自定义对象来处理传入和传出的数据。这非常适合我的需要 - 除了一个例外。
我想在我的对象上设置一个 serverTimestamp。我已阅读文档和看我能做到这一点是这样。文档说明我可以FieldValue.serverTimestamp()
在setData
和updateData
调用中使用,并显示以下示例:
db.collection("objects").document("some-id").updateData([
"lastUpdated": FieldValue.serverTimestamp(),
]) { err in
...
}
Run Code Online (Sandbox Code Playgroud)
但是,在我的代码中,我将自定义对象传递给这些函数,如下所示:
let city = City(name: "Los Angeles")
do {
try db.collection("cities").document("LA").setData(from: city)
} catch let error {
print("Error writing city to Firestore: \(error)")
}
Run Code Online (Sandbox Code Playgroud)
所以,我想要的是向我的自定义类添加一个新属性,这将做两件事:
我需要对我的自定义类做什么才能实现这一点?
public struct City: Codable {
let name: String
let createdAt: Date
}
Run Code Online (Sandbox Code Playgroud)
预先感谢您的帮助!
好的,我找到了答案:
public struct City: Codable {
let name: String
@ServerTimestamp var createdAt: Timestamp?
}
Run Code Online (Sandbox Code Playgroud)
在这里,当我调用 .createAt 时,createdAt 为零setData
。服务器将使用服务器值填充它,然后下次我从服务器获取数据时,它将填充写入的日期时间(并且永远不会被覆盖)
归档时间: |
|
查看次数: |
319 次 |
最近记录: |