每次更新猫鼬模式中的日期

Posted

技术标签:

【中文标题】每次更新猫鼬模式中的日期【英文标题】:Update date inside mongoose schema every time 【发布时间】:2020-05-03 01:03:40 【问题描述】:

每次更新[messageSchema] 时,我都会尝试更新lastMessageAt

这种方式是行不通的。 I 当 messageSchema 填充它的第一个对象时生成的唯一日期。

我该如何解决?

提前致谢!

const chatSchema = new mongoose.Schema(
  userName1: String,
  userName2: String,
  messages: [messageSchema],
  lastMessageAt: 
    type: Date,
    default: Date.now
  
);

【问题讨论】:

【参考方案1】:

您可以使用 mongooses post 中间件。

chatSchema.post('save', function(next) 
  if (this.isModified('messages')) 
    this.lastMessageAt = Date.now();
  
  next();
);

【讨论】:

感谢您的帮助,但这样做时我收到了一个错误的请求:-( 我刚刚发现猫鼬现在已经内置了时间戳。谢谢你,兄弟!! :-)【参考方案2】:

发现猫鼬现在已经内置了时间戳,它们的使用方式如下:

const chatSchema = new mongoose.Schema(
  
    userName1: String,
    userName2: String,
    messages: [messageSchema]
  ,
   timestamps: true 
);

【讨论】:

以上是关于每次更新猫鼬模式中的日期的主要内容,如果未能解决你的问题,请参考以下文章

子模式属性不更新猫鼬

在猫鼬中格式化日期

如何使用引导模式更新引导日期时间选择器中的默认日期

猫鼬更新数组对象中的字段

猫鼬模式中的嵌套地图

猫鼬中的嵌套子模式