【问题标题】:mongoose how to set date format in model猫鼬如何在模型中设置日期格式
【发布时间】:2015-08-10 13:04:28
【问题描述】:

我是猫鼬的新手。我使用 "Date" 作为我的 "holidayDate" 列的类型。我只想在我的 "holidayDate" 列中存储日期而不是时间,所以有没有办法在域模型中定义日期格式,所以当我的域保存我的 "holidayDate"列值将根据域模型的日期格式保存。

var HolidaySchema = new Schema({
    holidayName: {
        type: String,
        default: '',
        required: 'Please fill holiday name',
        trim: true
    },
    holidayDate: {
        type: Date,
    required: 'Please fill From Date'
    }

});

mongoose.model('Holiday', HolidaySchema);

【问题讨论】:

    标签: node.js mongodb mongoose meanjs


    【解决方案1】:

    MongoDB 的底层存储引擎 (BSON) 没有 date-without-time 类型,只有完整日期(有关 MongoDB 文档中 BSON 类型的详细信息,请参阅 this page)。

    这样做的结果是您需要在代码中处理它,方法是确保在插入和查询时始终将时间设置为(例如)00:00:00,或者将其存储为不同的类型(例如yyyy-mm-dd 字符串或整数)。其中哪一个最合适取决于您查询和使用该日期的要求。

    【讨论】:

      【解决方案2】:

      来自docs,如果您的架构中有日期类型字段,例如

       holidayDate: {
              type: Date,
          required: 'Please fill From Date'
          }
      

      当您创建假期文档时,Mongoose 会使用 Date() 构造函数将值转换为原生 JavaScript 日期

      const holiday = new Holiday({
      holidayDate:'2012-12-19'
      });
      
      holiday.holidayDate instanceof Date; // true
      

      当您验证文档时,无效的日期将导致 CastError。

      const holiday = new Holiday({
      holidayDate:'invalid date'
      });
      
      holiday.holidayDate instanceof Date; // false
      holiday.validateSync().errors['lastActiveAt']; // CastError
      

      【讨论】:

        猜你喜欢
        • 2013-05-15
        • 1970-01-01
        • 2020-06-11
        • 1970-01-01
        • 2017-02-26
        • 1970-01-01
        • 2020-04-12
        • 1970-01-01
        • 2020-02-10
        相关资源
        最近更新 更多