【发布时间】:2021-01-07 07:38:04
【问题描述】:
我有一个 studentSchema,其中有默认值为 0 的 pass 属性。所以我想在用户创建新通行证时将该值增加 1。
pass: {
type: Number,
default: 0,
},
【问题讨论】:
标签: javascript node.js mongodb mongoose
我有一个 studentSchema,其中有默认值为 0 的 pass 属性。所以我想在用户创建新通行证时将该值增加 1。
pass: {
type: Number,
default: 0,
},
【问题讨论】:
标签: javascript node.js mongodb mongoose
如果我没听错的话,你可以这样使用猫鼬pre hook:
假设您以这种方式(或类似方式)更新:
model.update({_id:value},{$set:{yourPasswordField:"newName"}})
那么你需要:
$set.yourPasswordField 是否存在,这意味着您已经更新了该查询中的问题。MongooseModel.pre('update', async function () {
// get the fields which have been updated.
const passUpdated = this.getUpdate().$set.yourPasswordField;
if(passUpdated){
// Find the object using the filter in your query (i,e: {_id:value} )
const docToUpdate = await this.model.findOne(this.getFilter());
// Then update the value into 1 and save into DB
docToUpdate.pass = docToUpdate.pass + 1;
docToUpdate.save()
}
});
【讨论】: