javascript - Firestore 时间戳通过 Callable 函数传递

标签 javascript firebase google-cloud-firestore google-cloud-functions

我正在开发一个有助于项目管理的 React Web 应用程序。我面临的问题是 Firestore 的时间戳。 Firestore 中存储的每个项目对象都有一个 Firestore 时间戳类型的 createdOn 字段。我的网络应用程序正在调用一个可调用的 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",

最佳答案

“我想知道问题是否是在转换为 JSON 时 timeStamp 丢失了一些东西。”

是的,它失去了一些东西。时间戳将以这样的方式序列化,即其秒和纳秒字段将单独发送。您将必须重新构建 new Timestamp object来自客户端收到的这些值。由于您没有显示非常具体的代码,因此实际上不可能提供更多信息。我强烈建议您不要仅仅依赖于时间戳的默认 JSON 序列化,而是在两端明确读取和写入其秒和纳秒字段。

另请参阅 Java 的相关问题:How to serialize Firestore TimeStamp in Android Java?

关于javascript - Firestore 时间戳通过 Callable 函数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56420690/

相关文章:

Javascript - 在每个实例上增加类变量

javascript - 我对 DOM 操作有点迷茫

javascript - 如何让 Tampermonkey 脚本在 hashchange 事件后等待页面完成?

javascript - jQuery - 从工作中删除警报停止代码

firebase - 从 Flutter 中的 Firebase 存储获取下载 URL

firebase - Firebase 中的连接是如何计算的

javascript - Firebase 字符串在字段末尾匹配

firebase - 错误 : Client doesn't have permission to access the desired data

ios - 从 firestore 获取数据时准备 segue

javascript - react 组件中的状态不会呈现