如何正确地“ toDate()”大文件的Firestore时间戳?

时间:2018-10-04 17:16:12

标签: javascript firebase timestamp google-cloud-firestore

自最近以来,Firestore不将时间戳记作为Date对象而是作为Timestamp对象返回。意思是,每次查询后,您都必须执行以下操作:

// Old:
const date = snapshot.get('created_at');
// New:
const timestamp = snapshot.get('created_at');
const date = timestamp.toDate();

我有多个时间戳存储在其中的对象,在对对象执行任何操作之前,我被迫分别转换每个时间戳。我现在要做的是:

let user = // get user from firestore

user.created = user.created.toDate()
user.lastUpdated = user.lastUpdated.toDate()
user.foo.foo.foo.foo.fooDate1 = user.foo.foo.foo.foo.fooDate1.toDate()
user.foo.foo.foo.fooDate1 = user.foo.foo.foo.fooDate1.toDate()
...
user.foo.fooDate99 = user.foo.fooDate99.toDate()

有办法解决吗?

即使我不需要转换时间戳,我也必须对所有文档执行此操作,因为当存在原始Firestore时间戳时,各种依赖项(例如,贬值)会因“ Non-POJO”错误而中断。我的对象。

是否可以将文档的所有时间戳直接转换为普通的Date对象,还是手动方法是唯一的选择?

1 个答案:

答案 0 :(得分:0)

没有简单的选项可以切换以实现此目标。

如果您不想手动更改它们,则可以编写一些代码来递归地归纳所有对象的所有属性,检查哪些对象看起来像Timestamp对象(例如,它具有toDate函数),然后进行转换。