3
respostas

Mudança de URL

Meu código:

module.exports = function(app){
      app.get('/registros',function(req,res){
        var connection = app.infra.connectionFactory;
        var LancamentoDAO = new app.infra.LancamentoDAO(connection);

        LancamentoDAO.lista(function(err, results){
          res.format({
            html: function(){
              res.render('registros/registros', {lista:results});
            },
            json: function(){
              res.json(results);
            }
          });

        });
        connection.end();
      });
      app.get('/home',function(req,res){
        res.render('home/home', {errosValidacao:{}});
      });
      app.post('/registros/salva', function(req,res){

        var lancamento = req.body;

        req.assert('datarotulo', 'É obrigatório o lançamento da data constante no rótulo').notEmpty();//validando campo

        var erros = req.validationErrors();
        if (erros) {
          res.render('home/home', {errosValidacao:erros});
          return;
        }

        var connection = app.infra.connectionFactory;
        var LancamentoDAO = new app.infra.LancamentoDAO(connection);
        LancamentoDAO.salva(lancamento, function(erros, results){
          console.log(erros);
          res.redirect('/registros');
        });
      });
};
3 respostas

O que ocorre é que no navegador, após a validação, o navegador sai da url http://localhost:3000/home e vai para uma url http://localhost:3000/registros/salva. Quando o campo recebe um input válido, ele renderiza uma url http://localhost:3000/registros/registros/salva, que não leva a nada. Note que na segunda url "registros" aparece duas vezes.

Oi José tudo bem ?

Imagino que o problema esteja no seu redirect, talvez você não tenha colocado "/" por padrão se não estou enganado, quando não avisamos ele apenas concatena as urls.

Obrigado pelo retorno, mas o redirect possui '/', veja:

LancamentoDAO.salva(lancamento, function(erros, results){
          console.log(erros);
          res.redirect('/registros');
        });
      });
};