You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动