>我有一个用户模型,我根据需要放置password
字段。问题是,当我尝试在不发送password
的情况下更新用户时,会引发错误,因为它说需要password
。
如何在创建时将password
设置为必需,但在更新时不设置为必需?扩展这一点,如何创建一个可以在请求上接收 1 到 4 个属性的终结点?
放置终结点
exports.putUsuario = function(req, res) {
Usuario.findById(req.user._id, function(err, usuario) {
if (err)
res.send(err);
if (usuario){
// Update the existing beer quantity
usuario.password = req.body.password;
usuario.nome = req.body.nome;
usuario.sexo = req.body.sexo;
usuario.idade = req.body.idade;
// Save the beer and check for errors
usuario.save(function(err) {
if (err)
res.send(err);
res.json(usuario);
});
}
else {
res.json(usuario);
}
});
};
错误返回给邮递员
{
"errors": {
"password": {
"message": "Path `password` is required.",
"name": "ValidatorError",
"properties": {
"type": "required",
"message": "Path `{PATH}` is required.",
"path": "password"
},
"kind": "required",
"path": "password"
}
},
"message": "Usuario validation failed",
"name": "ValidationError"
}
您每次都设置密码,即使密码为空/未定义。
在设置请求正文之前测试请求正文是否有密码:
if (req.body.password) {
usuario.password = req.body.password;
}