Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

errosValidacao is not defined

ReferenceError: C:\Users\t0063628\casadocodigo\app\views\produtos\form.ejs:4
    2|     <body>

    3|         <div class='erros'>

 >> 4|             <%if(errosValidacao){%>

    5|             <ul>

    6|                 <%for(var i=0;i<errosValidacao.length;i++){%>

    7|                     <li> <%=errosValidacao[i].param%> - <%=errosValidacao[i].msg%> </li>


errosValidacao is not defined
    at eval (eval at compile (C:\Users\t0063628\casadocodigo\node_modules\ejs\lib\ejs.js:618:12), <anonymous>:11:7)
    at returnedFn (C:\Users\t0063628\casadocodigo\node_modules\ejs\lib\ejs.js:653:17)
    at tryHandleCache (C:\Users\t0063628\casadocodigo\node_modules\ejs\lib\ejs.js:251:36)
    at View.exports.renderFile [as engine] (C:\Users\t0063628\casadocodigo\node_modules\ejs\lib\ejs.js:482:10)
    at View.render (C:\Users\t0063628\casadocodigo\node_modules\express\lib\view.js:135:8)
    at tryRender (C:\Users\t0063628\casadocodigo\node_modules\express\lib\application.js:640:10)
    at Function.render (C:\Users\t0063628\casadocodigo\node_modules\express\lib\application.js:592:3)
    at ServerResponse.render (C:\Users\t0063628\casadocodigo\node_modules\express\lib\response.js:1008:7)
    at C:\Users\t0063628\casadocodigo\app\routes\produtos.js:36:8
    at Layer.handle [as handle_request] (C:\Users\t0063628\casadocodigo\node_modules\express\lib\router\layer.js:95:5)

Código:

html>
    <body>
        <div class='erros'>
            <%if(errosValidacao){%>
            <ul>
                <%for(var i=0;i<errosValidacao.length;i++){%>
                    <li> <%=errosValidacao[i].param%> - <%=errosValidacao[i].msg%> </li>
                <%}%>
            </ul>
                <%}%>
        </div>
        <form action="/produtos" method="post">
            <div>
                <label for="titulo">Titulo</label>
                <input type= "text" id = "titulo" name="titulo" placeholder="coloque o titulo"/>
            </div>
                         <div>
                <label for="descricao">Descricao</label>
                <textarea cols="20" rows="10"  id ="descricao" name = "descricao" placeholder="fale sobre o livro"></textarea>
            </div>
                         <div>
                <label for="preco">preco</label>
                <input type= "text" id = "preco" name = "preco" placeholder="140.25"/>
            </div>

            <input type="submit" value="gravar"/>
        </form>
    </body>
</html>

Código;

module.exports = function(app){
        app.get('/produtos',function(req,res){
            var connection = app.infra.connectionFactory();
        var produtosDAO = new app.infra.ProdutosDAO(connection);
        produtosDAO.lista(function(erros,resultados){
            res.format({
            html:function(){
                res.render('produtos/lista',{lista:resultados});
            },
            json:function(){
                res.json(resultados);

            }
        });
          });
    connection.end();
    //consulta
        });

    app.get('/produtos/form',function(req,res){
       res.render('produtos/form',{errosValidacao:{}});
       console.log("cheguei aqui");
    });



    app.post ('/produtos',function(req,res){
        var produto = req.body;

        req.assert('titulo', 'Titulo é obrigatório').notEmpty();
        req.assert('preco','Formato inválido').isFloat();

        var erros = req.getValidationResult();
        if(erros) {
            res.render('produtos/form',);
            return;
        }
        console.log(produto);
         var connection = app.infra.connectionFactory();
        var produtosDAO = new app.infra.ProdutosDAO(connection);
        produtosDAO.salva(produto,function(erros,resultados){
            console.log(erros);
            res.redirect('/produtos');
                });
    });
    app.get('/produtos',function(){
                var connection = app.infra.connectionFactory();
                var produtosDAO = app.infra.ProdutosDAO(connection);
        var produto = produtoDAO.carrega(id,callback);
        if(produto){
        produtosDAO.remove(produto,callback);


        }    

    });


 }
3 respostas

Fala aí Patrícia, tudo bem? Acho que está faltando você devolver o objeto JSON contendo os erros para sua função render na função do app.post ('/produtos',function(req,res).

Seu código:

var erros = req.getValidationResult();
if(erros) {
    res.render('produtos/form',);
    return;
}

O correto seria:

var erros = req.getValidationResult();
if(erros) {
    res.render('produtos/form', { errosValidacao: erros });
    return;
}

Espero ter ajudado.

Fala Mateus,

Blza?

Então ? O erro parou mas as mensagens não aprecem. Coloquei alguns logs e está apresentando Promise {} module.exports = function(app){ app.get('/produtos',function(req,res){ var connection = app.infra.connectionFactory(); var produtosDAO = new app.infra.ProdutosDAO(connection); produtosDAO.lista(function(erros,resultados){ res.format({ html:function(){ res.render('produtos/lista',{lista:resultados}); }, json:function(){ res.json(resultados);

        }
    });
      });
connection.end();
//consulta
    });

app.get('/produtos/form',function(req,res){
   res.render('produtos/form',{errosValidacao:{}});
   console.log("cheguei aqui");
});



app.post ('/produtos',function(req,res){
    var produto = req.body;

    req.assert('titulo', 'Titulo é obrigatório').notEmpty();
    req.assert('preco','Formato inválido').isFloat();

    var erros = req.getValidationResult();
     console.log("Erros");
             console.log(req.getValidationResult());

    if(erros) {
     console.log(" if de erros");
             console.log(erros);
        res.render('produtos/form', { errosValidacao: erros });
        return;
    }
    console.log(produto);
     var connection = app.infra.connectionFactory();
    var produtosDAO = new app.infra.ProdutosDAO(connection);
    produtosDAO.salva(produto,function(erros,resultados){
        console.log(erros);
        res.redirect('/produtos');
            });
});
app.get('/produtos',function(){
            var connection = app.infra.connectionFactory();
            var produtosDAO = app.infra.ProdutosDAO(connection);
    var produto = produtoDAO.carrega(id,callback);
    if(produto){
    produtosDAO.remove(produto,callback);


    }    

});

}

solução!

var erros = req.validationErrors();

    if(erros) {
      res.render('produtos/form', { errosValidacao: erros,produto:produto});
        return;
    }