【问题标题】:Can't extract Dates or Timestamps from Firestore DocumentSnapshot无法从 Firestore DocumentSnapshot 中提取日期或时间戳
【发布时间】:2020-04-02 03:49:07
【问题描述】:

我正在检索一组包含StringsDatesTimestamp 的事件文档。 Strings 没问题,但最近我在我的模型中添加了 DatesTimestamp,它们总是返回为零,我已将其设置为默认值,即使我可以在 Firebase 控制台中清楚地看到它们存储正确。

DocumentSnapshot 检索的初始化设置

init?(snapshot:DocumentSnapshot){

    self.eventId = snapshot.get("eventId") as? String ?? "No event Id"
    self.byId = snapshot.get("byId") as? String ?? "No uid"
    self.adminUser = snapshot.get("adminUser") as? String ?? "No admin user"
    //self.eventCreated = snapshot.get("eventCreated") as? Timestamp ?? "No Event Created Date"
    self.eventName = snapshot.get("eventName") as? String ?? "No Event Name"
    self.eventLocation = snapshot.get("eventLocation") as? String ?? "No Location"
    self.eventStart = snapshot.get("eventStart") as? Date ?? nil
    self.eventEnd = snapshot.get("eventEnd") as? Date ?? nil

}

DocumentSnapshot 的结果

adminUser: "", 
byId: "juYtTP509rhXYPd433", 
eventCreated: nil, //Timestamp retrieved as nil
eventId: "gC2RVdUuB9CD66JEYM18", 
eventName: "test", 
eventLocation: "", 
eventStart: nil, //Date retrieved as nil
eventEnd: nil, //Date retrieved as nil

事件模型

struct Event {

var adminUser = ""
var byId = ""
var eventCreated:Timestamp?
var eventId = ""
var eventName = ""
var eventLocation = ""
var eventStart:Date? = nil
var eventEnd:Date? =  Date(timeIntervalSince1970: 0)

如果我需要在此处添加该方法以获得更好的上下文,请告诉我?

【问题讨论】:

    标签: swift firebase date google-cloud-firestore timestamp


    【解决方案1】:

    Firestore 没有内部日期类型。在内部,当它接收到 Dates 或 Timestamp 作为输入时,它会创建一个 Timestamp,因此这就是您的代码在任何一种情况下都应该从 DocumentSnapshot 中得到的结果(绝不是 Date)。

    【讨论】:

    • 要将Timestamp 转换为Date,调用它的dateValue method
    • 将进行相当多的返工才能实现这一目标,但我将开始朝这个方向前进。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 2017-02-01
    相关资源
    最近更新 更多