mongoose如何在模型中设置日期格式

时间:2015-05-28 07:08:32

标签: node.js mongodb mongoose meanjs

我是猫鼬的新手。我使用“日期”作为“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);

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

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