2016-07-10 2 views
0

Я использую «express -validator» для проверки своих форм, при вставке этой проверки обычно возникает проблема, связанная с возникновением ошибки. Невозможно прочитать свойство «_id» неопределенного.Невозможно прочитать свойство «_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

Ta meio estranho isso ae ... o que o código de baixo tem a ver com o de cima? –

+0

o de baixo são meu codigos de verificação as regras o de cima o controller –

+0

Вы можете показать полное сообщение об ошибке? –

ответ

0

Ну, когда req.params.id не существует в базе данных, ошибка не существует, а значение данных равно null, убедитесь, что в случае данных === null и запустите сообщение.

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}) 
}); 
+0

спасибо за помощь, помогли мне много –

Смежные вопросы