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

Posted

技术标签:

【中文标题】猫鼬如何在模型中设置日期格式【英文标题】: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);

【问题讨论】:

【参考方案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

【讨论】:

以上是关于猫鼬如何在模型中设置日期格式的主要内容,如果未能解决你的问题,请参考以下文章

在变量中设置日期格式

如何在与 SQL 的连接中设置日期格式?

如何在 Oracle SQL Developer 中设置自定义日期时间格式?

怎么在excel中设置自定义日期格式

如何在asp.net core razor pages 2.2中设置日期格式和文化

如何在linq中设置日期格式“yyyy-MM-dd hh:mm”?