我已经在猫鼬中创建了架构
let userSchema = new Schema({
name: {
type: String,
required: true,
lowercase: true,
trim: true,
minLength: 4,
maxLength: 15
}
});
当我使用此查询更新
时user.updateOne(
{ "_id" : body.id },
{ $set: {
name:body.name,
phone:body.phone,
designation:body.designation,
address:body.address
} }
).then(function (updateDate) {
var data={message:"success",data:updateDate}
callback(data)
}).catch(function (err) {
var data={message:"error",data:err}
callback(data);
});
如果我更新2长度的字符串,它不会引发任何错误。 关于stackoverflow的解决方案很少,但在我看来这些解决方案不起作用
答案 0 :(得分:0)
首先,在您的架构中,minLength
必须为minlength
,并且maxLength
必须为maxlength
,且小写字母为 l 。
因此您的架构必须是这样的:
let userSchema = new Schema({
name: {
type: String,
required: true,
lowercase: true,
trim: true,
minlength: 4,
maxlength: 15
}
});
第二,您需要按照Cuong的回答所述,向您的updateOne添加{runValidators: true}
选项。
默认情况下,更新验证器处于关闭状态-您需要指定 runValidators选项。
所以您的代码必须是这样的:
user.updateOne(
{ _id: body.id },
{
$set: {
name: body.name,
phone: body.phone,
designation: body.designation,
address: body.address
}
},
{ runValidators: true }
)
.then(function(updateDate) {
var data = { message: "success", data: updateDate };
callback(data);
})
.catch(function(err) {
var data = { message: "error", data: err };
callback(data);
});
答案 1 :(得分:0)
您只需打开mongodb Compass,然后转到“验证”选项并将验证级别更改为严格模式。