【发布时间】:2020-12-14 08:39:28
【问题描述】:
在我的猫鼬模式中,如下所示:
mongoose.Schema({
"name": String,
"items": [
{
"class": String,
"source": String,
"createdAt": { type: Date, default: Date.now },
"updatedAt": { type: Date, default: Date.now }
}
],
}, { versionKey: false });
当我插入新记录时,createdAt 和 updatedAt 会自动填充。这可以。如下运行更新查询时,我怎样才能达到同样的效果:
model.update({name: "myname"}, {$set: {class: "...", updatedAt: "somedate"}})
目前,我必须明确指定updatedAt 的值。我想让猫鼬处理这个。每当更新数组items 中的项目时,该项目的updatedAt 必须自动更新。猫鼬可以做到这一点吗?
【问题讨论】:
-
在您设置
versionKey: false的对象中,将另一个属性设置为timestamps: true -
@Chris 文档说
if true, Mongoose adds createdAt and updatedAt properties to your schema and manages those properties for you.这是否意味着它会在架构中强制使用这些属性?我只需要数组items中的createdAt和updatedAt。 -
哦,我明白了。嗯,这很有趣。您是对的,这些将被添加到您的顶级架构中,但也应该更新子架构时间戳。你看过猫鼬钩吗?您可以在某些查询发生之前挂钩它们,并在它们保存之前进行修改。
-
有这个答案stackoverflow.com/a/58665631/5140389 可能会被修改以配合你想做的事情。
标签: javascript mongodb mongoose schema