【发布时间】:2020-10-30 11:56:09
【问题描述】:
我有一个名为myData 的自定义对象,在该对象中我有一个时间戳。考虑到 Firebase 的 Node 驱动程序不支持自定义对象,我使用以下行快速将数据转换为纯 JSON:
const dataAsJson = JSON.parse(JSON.stringify(myData));
但是,当它执行此操作时,它会从对象中删除 Date 并将其转换为字符串(如果它最初是 Date 类型),或者如果它是 FirebaseFirestore.Timestamp 类型的映射。
如果data = {dateExample: admin.firestore.Timestamp.fromDate(new Date('December 10, 1815'))},我想我可以在使用const res = await docRef.set(data, {merge: true}); 之后立即在同一个对象上拍摄另一个直接设置,但我宁愿一次性完成。
以前有人解决过这个问题吗?我担心如果我搞砸了批量提交,我可能无法选择先设置哪个。
【问题讨论】:
-
“Firebase 的 Node 驱动程序不支持自定义对象” - 您是如何得出这个结论的?您可以明确地将纯 JavaScript/TypeScript 对象传递给 Firestore。它将根据对象中的属性在文档中创建字段和值。
-
@DougStevenson 我猜是指具有自定义原型的对象。我回来的错误是
Value for argument data is not a valid Firestore document. Couldn't serialize object of type... Firestore doesn't support objects with custom prototypes。也许有一种简单的方法可以将我的自定义原型转换为 Firestore 接受的格式。现在正在调查。
标签: node.js typescript firebase google-cloud-firestore