【问题标题】:How to correctly jsonify a mongoose model with a birthday?如何正确 jsonify 生日的猫鼬模型?
【发布时间】:2013-08-10 07:32:01
【问题描述】:

如何使用 mongoose 存储像 09/14/1986 这样的生日并将其转换为 json toJSON 忽略时区?

假设你有一个类似的架构

schema = new mongoose.Schema({
  birthday: Date
});

你存储上面的生日,mongoose 实际上存储为Date(527032800000)。现在,当您在模型上调用 toJSON 时,它会转换为 JSON.stringifyDates 被转换为带有toISOString 的字符串,结果为1986-09-13T22:00:00.000Z(在具有德国时区设置的机器上:Europe/Berlin)。如您所见,这不是我们预期的生日日期,因为时区已被解释(参见类似问题here)。

怎么办?我不想失去解析各种生日字符串和使用猫鼬的toJSON 的舒适度。

【问题讨论】:

    标签: json date mongoose


    【解决方案1】:

    问题在于创建日期的方式。 我建议您对生日等数据使用 UTC 时间的日期,这样您就可以在整个系统中使用 UTC 时间。

    您可以:

    • 在构造函数中以 UTC 格式设置日期,向其提供 UTC 格式的字符串: new Date('1986-09-14T00:00:00.000Z');
    • 使用new Date(Date.UTC(year, month, day, 0, 0, 0)); 根据整数年、月和日创建日期对象。

    因此,答案是:您应该在创建/更新模型时生日字段中存储 UTC 日期

    【讨论】:

      猜你喜欢
      • 2015-08-05
      • 2013-08-20
      • 2020-04-12
      • 1970-01-01
      • 2018-02-15
      • 1970-01-01
      • 1970-01-01
      • 2017-10-05
      相关资源
      最近更新 更多