我正在使用' express-validator'检查我的表单,插入此检查通常是转发问题发生错误。 无法阅读财产' _id'未定义的。
以下代码:
用户控制器
var validacao = require('../validacoes/usuarios');
edit:function(req, res){
Usuario.findById(req.params.id, function(err, data){
if(err){
req.flash('erro', 'erro ao editar usuario' + err);
res.redirect('/usuarios');
}else{
res.render('usuarios/edit', {dados: data})
}
});
},
update:function(req, res){
if(validacao(req, res)){
Usuario.findById(req.params.id, function(err, data){
var model = data;
model.nome = req.body.nome;
model.site = req.body.site;
model.email= req.body.email;
model.save(function(err){
if(err){
req.flash('erro', 'erro ao editar usuario' + err);
res.render('usuarios/edit', {dados: model});
}else{
req.flash('info', 'registro atualizado com sucesso!');
res.redirect('/usuarios');
}
});
});
}else{
res.render('usuarios/edit', {user: req.body});
}
}
控制器我导出一个外部文件,我有验证规则:
以下代码:
var url = require('url');
module.exports = function(req, res){
var createUrl = url.parse(req.url).pathname == "/usuarios/create";
var updateUrl = !createUrl;
req.assert('nome', 'Informe o seu nome').notEmpty();
req.assert('email', 'Email inválido').isEmail();
req.assert('site', 'Site não tem a url válida').isURL();
if(createUrl){
req.assert('password', 'sua senha deve conter 6 ate 20 caracteres').len(6,20);
}
var validateErros = req.validationErrors() || [];
if(req.body.password != req.body.password_confirmar){
validateErros.push({msg: 'Senhas diferentes'});
}
if(validateErros.length > 0){
validateErros.forEach(function(e){
req.flash('erro', e.msg);
});
return false;
}else{
return true;
}
}
感谢您的关注
答案 0 :(得分:0)
Usuario.findById(req.params.id, function(err, data){
if(err) {
req.flash('erro', 'erro ao editar usuario' + err);
res.redirect('/usuarios');
} else {
res.render('usuarios/edit', {dados: data})
}
});
好吧,当req.params.id不存在于数据库中时,错误将不存在,并且数据的值为null,请确保在数据大小为=== null时闪烁消息。< / p>
Usuario.findById(req.params.id, function(err, data){
if(err) {
req.flash('erro', 'erro ao editar usuario' + err);
res.redirect('/usuarios');
} else if (!data) {
req.flash('erro', 'user don\'t exist');
res.redirect('/usuarios');
}
res.render('usuarios/edit', {dados: data})
});