无法从Firebase云功能返回日期?

时间:2018-12-08 18:08:38

标签: javascript firebase google-cloud-functions

我正在尝试从firebase函数简单地返回一个日期:

import * as functions from 'firebase-functions';

const date = functions.https.onCall(() => {
  return {
    date: new Date(),
    iso: new Date().toISOString()
  };
});
export default date;

但这是我得到的结果(使用firebase functions:shell):

RESPONSE RECEIVED FROM FUNCTION: 200, {
  "result": {
    "date": {},
    "iso": "2018-12-08T18:00:20.794Z"
  }
}

请注意,Date()对象被序列化为一个空对象,这似乎是错误的?我本来希望至少有一个.toString()或某些Date实例...

这是否意味着我必须明确避免返回Date实例?我可以编写一个自定义的序列化程序,将其包装在函数中,以通过.toISODate()等将Date实例深层转换为字符串,但是看来我一定缺少某些东西!

谢谢。

1 个答案:

答案 0 :(得分:1)

如果您有日期对象d,则应该:

  1. 使用d.getTime()
  2. 以毫秒为单位发送其Unix纪元时间
  3. 使用d.toJSON()发送JSON序列化表格。

我建议使用#1,因为与其他系统进行互操作更容易。每个系统都可以在Unix时代理解日期,并且该数字不需要解析。