Javascript Mongoose-更新时如何验证模型?

Javascript Mongoose-更新时如何验证模型?,javascript,node.js,express,mongoose,model,Javascript,Node.js,Express,Mongoose,Model,我有下面的型号。当我试图用错误的信息创建时,它是不允许的,但如果我试图编辑信息,它是允许的。我怎样才能防止呢 var userSchema=新模式({ 卡塔奥奇达多:{ 类型:字符串, 要求:正确, 索引:{ 独一无二:没错, }, 匹配:/[0-9]{8}/,, }, 密码:{type:String,必需:true}, histórico:[ { 类型:Schema.Types.ObjectId, 参考:“请求”, }, ], 角色:{type:String}, estado:{type:St

我有下面的型号。当我试图用错误的信息创建时,它是不允许的,但如果我试图编辑信息,它是允许的。我怎样才能防止呢

var userSchema=新模式({
卡塔奥奇达多:{
类型:字符串,
要求:正确,
索引:{
独一无二:没错,
},
匹配:/[0-9]{8}/,,
},
密码:{type:String,必需:true},
histórico:[
{
类型:Schema.Types.ObjectId,
参考:“请求”,
},
],
角色:{type:String},
estado:{type:String,enum:[“Infetado”、“Suspeito”、“Curado”]},
});
userController.updateUserPassword=async(req,res)=>{
const oldUser=wait User.findbyidanddupdate(req.params.userId{
密码:req.body.password,
});
//nao permitir密码vazia
const newUser=wait User.findById(req.params.userId);
res.send({
老:老用户,
新:新用户,
});
};
userController.updateUserState=async(req,res)=>{
const oldUser=wait User.findbyidanddupdate(req.params.userId{
estado:req.body.estado,
});
默认情况下处于关闭状态,您需要在更新操作中指定
runValidators:true
选项

userController.updateUserPassword=async(req,res)=>{
试一试{
const oldUser=await User.findByIdAndUpdate(
req.params.userId,
{
密码:req.body.password,
},
{
runValidators:对,
}
);
//nao permitir密码vazia
const newUser=wait User.findById(req.params.userId);
res.send({
老:老用户,
新:新用户,
});
}捕捉(错误){
log('Error:',err);
res.status(500)。send('出现问题');
}
};

我在哪里激活它?我已经激活了,现在每当我尝试更新无效密码时,邮递员只会停留在“发送请求”处。假设会发生这种情况吗?@FábioPires你能像我在更新的答案中那样添加一个try-catch块,并检查api控制台是否有错误吗?它起作用了。愚蠢的问题,与其发送出错的消息,不如发送密码无效,或者我应该避免向用户显示错误是什么?@FábioPires是的如果是验证错误,请检查我的答案