我正在开发一个可帮助项目管理的React Web应用程序。我面临的问题与Firestore的时间戳有关。 Firestore中存储的每个项目对象都有一个createdOn
字段,其类型为Firestore时间戳。我的Web应用程序正在调用可调用的firebase函数,该函数将获取所有项目并返回它们。问题是toDate()
函数在Web应用程序中不起作用,但在firebase函数中起作用。我想知道问题是否是在转换为JSON时timeStamp丢失了一些东西。我是否缺少某些物品,还是应该将它们存储为物品?我真的不想转换所有日期服务器端,因为那样会减慢函数调用的速度。我正在使用时间戳在客户端进行过滤和分析。
我如何将时间戳记作为项目对象的一部分:createdOn: admin.firestore.Timestamp.now(),
,然后在可调用函数中对此进行测试:console.log(allProjects[0].createdOn!.toDate())
,此方法有效。
在我的网络应用中,我将此称为data.createdOn.toDate()
,并收到错误消息TypeError: data.createdOn.toDate is not a function
任何帮助将不胜感激。 谢谢,
我在功能方面使用
"firebase-admin": "^8.0.0",
"firebase-functions": "^2.3.1",
和客户端
"firebase": "^6.1.0",
"typescript": "^3.5.1"
"react": "^16.8.6",
答案 0 :(得分:1)
“我想知道问题是否出在时间戳转换为JSON时。”
是的,它失去了一些东西。时间戳将被序列化,以使其秒和纳秒字段分别发送。您将不得不根据客户端上收到的那些值来重新构建new Timestamp object。由于您没有显示非常具体的代码,因此实际上不可能提供更多信息。我强烈建议您不仅依赖于时间戳的默认JSON序列化,而且应该明确地在两端明确读写秒和纳秒字段。
另请参阅Java相关问题:How to serialize Firestore TimeStamp in Android Java?