Mongoose默认日期值不更新问题:模型配置排查求助
解决Mongoose模型created_on字段始终不变的问题
嘿,我一眼就揪出问题所在啦!
问题根源
你现在的代码里,default: Date.now()是在Schema定义的瞬间就执行了,服务器启动时会生成一个固定的时间戳,之后所有新创建的文档都会复用这个初始值,难怪重启服务器才会更新。
Mongoose对动态默认值的要求是:要传递函数本身(不带括号),这样每次创建新文档时,它才会主动调用这个函数来获取最新的数值。
修正后的代码
// 正确的Model配置 let theModelSchema = new Schema({ created_on: { type: Number, default: Date.now, // 重点:不要加括号! }, }) let TheModel = mongoose.model('TheModel', theModelSchema)
额外补充:使用Date类型的情况
如果想直接存储Date对象而不是时间戳,逻辑是一样的:
created_on: { type: Date, default: Date.now, // 依然传递函数本身 }
这样配置后,每次创建新的TheModel文档时,created_on都会自动生成当前的时间戳(或Date对象),完全不用手动干预~
内容的提问来源于stack exchange,提问作者Mark Owuya




