gpt4 book ai didi

node.js - 如何用 Mongoose 只保存日期部分,而不是 ISODate 格式

转载 作者:可可西里 更新时间:2023-11-01 09:50:40 27 4
gpt4 key购买 nike

如何使用 mongoose schmea 只保存日期部分。目前我的模型是这样的:

我的日期:{ 类型:日期}

将日期保存为 "2016-02-27T00:00:00.000Z" 即使我只传递:"2016-02-27"。

最佳答案

我正在使用:

dateOfBirth: { type: Object }

并像这样保存:

dateOfBirth: {year: 1988, month: 0, day: 8}

这给了我:

  1. 能够按搜索

  2. 制作日期对象的能力:

    const dateOfBirth = new Date(
    user.dateOfBirth.year,
    user.dateOfBirth.month,
    user.dateOfBirth.day
    );

这将避免时区转换,因为日期对象将在设备环境中创建


UPD

附言我没有写优缺点,因为我的回答是关于单独存储日期的替代方法,使用这种方法时应该很明显。

聊天后SergiiStotskyi 在下面的评论中,我决定通过利弊来警告开发人员选择最佳解决方案。

请记住,这种方法的好处很少。

优点(我只能找到两个):

  1. 单独的年、月、日字段有助于按准确的年、月、日进行过滤。喜欢:查找按年份分组的 5 月份的所有记录(以比较前几年月份的差异)。
  2. 与对时区敏感的Date相比,年月日不随时区变化
  3. 不完全有好处,如果每个元素日期也是独立的,则可以保存来自客户端的日期

缺点:

  1. 如果需要按年龄获取记录,这将很难确定,将需要使用年份字段的近似值(在我的用例中最合适,因为没有人关心我项目中的确切数字)
  2. 对于精确的年龄过滤将需要按年份匹配聚合并通过过滤超出范围的项目来减少
  3. 需要验证闰年

关于node.js - 如何用 Mongoose 只保存日期部分,而不是 ISODate 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34682888/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com