如何修改Mongoose schema中Date.now输出格式为MMMM Do YYYY
解决方案
你可以按需选择以下两种常用方案,推荐优先选第一种,仅在需要展示的时候做格式转换,保留数据库的Date类型存储方便后续日期相关操作:
方案1:查询数据后手动转换格式
可以用轻量的日期处理库dayjs(也可以用moment.js,用法类似)完成转换:
- 安装依赖:
npm install dayjs
- 转换代码示例:
const dayjs = require('dayjs') // 如果需要展示中文的月份、序数词,加载中文本地化包 require('dayjs/locale/zh-cn') dayjs.locale('zh-cn') // 假设doc为你查询得到的Mongoose文档 const formattedDate = dayjs(doc.date).format('MMMM Do YYYY')
方案2:在Mongoose Schema中配置Getter自动转换
如果需要每次查询该字段都自动返回格式化后的内容,可以在Schema中配置Getter:
const dayjs = require('dayjs') require('dayjs/locale/zh-cn') dayjs.locale('zh-cn') const yourSchema = new mongoose.Schema({ date: { type: Date, default: Date.now, // 配置Getter,字段被读取时自动执行转换 get: (dateVal) => dateVal ? dayjs(dateVal).format('MMMM Do YYYY') : null } }, { // 必须开启这两个配置,Getter才会在查询返回文档时生效 toJSON: { getters: true }, toObject: { getters: true } })
注意:不建议修改Schema将日期直接存为格式化后的字符串,Date类型的原生存储支持直接做日期筛选、排序、差值计算等操作,灵活性远高于字符串存储
内容的提问来源于stack exchange,提问作者user13824605
相关产品推荐
相关产品推荐

