我有一个User模型,其用户名是一个唯一的密钥,它有一个自定义的唯一验证器。我遇到了一个问题,当我想更新用户并且username
没有更改时,它会给出验证错误。在调用$set
时,只有findOneAndUpdate
已更改的内容才是好习惯吗?如果是这样,我认为我必须在调用findOneAndUpdate
之前区分用户数据,我觉得这有点太重了。
const userSchema = new mongoose.Schema({
username: {
type: String,
required: [true, 'username is required.'],
trim: true,
unique: true, // unique index, not unique validation
},
…
});
this.model.findOneAndUpdate(
{ _id: req.params.id },
{
$set: {
username: req.body.username,
role: req.body.role
}
},
{ runValidators: true },
(err) => {
if (err) {
console.error(err);
return res.sendStatus(400);
}
return res.sendStatus(200);
}
)
答案 0 :(得分:0)
您需要按照本文档中的说明将“上下文”选项设置为“查询”:https://mongoosejs.com/docs/validation.html#update-validators