Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

request.validationErrors() Sempre retorna erro - Express Validator

Olá, A função validationErrors está retornando erro com ou sem o título preenchido.

Agradeço a ajuda!

Seguem meus códigos.

express.js

var express = require('express');
var load = require('express-load');
var bodyParser = require('body-parser'); // Objeto carregado
var ExpressValidator = require('express-validator');

console.log('Módulo do Express carregado com sucesso.');

module.exports = function () {

    var app = express();

    app.set('view engine', 'ejs');
    app.set('views', './app/views');

    app.use(bodyParser.urlencoded({extended: true})); // utilizando o bodyparser
    app.use(bodyParser.json()); // Adicionado para que o servidor aceite uma requisição com um json como argumento.
    app.use(ExpressValidator()); // Biblioteca para validação de dados que chegam via formulário, json, para serem inseridos no banco.

    load('routes', { cwd: 'app' }) // Aqui o cwd indica ao express onde localizar a pasta infra e rotas
        .then('infra')
        .into(app);
    return app;
}

produtos.js

module.exports = function (app) {

    app.get('/produtos', function (request, response) {
        var connection = app.infra.connectionFactory();
        var ProdutosDAO = new app.infra.ProdutosDAO(connection);
        ProdutosDAO.lista(function (err, results) {
            response.format({                    // Parte do código alterada para preparar o servidor para responder tanto em html ou em json
                html: function(){   // Ou seja, a variável de resposta (response) possui um método chamado format com algumas chaves definidas, aqui utilizaremos a html e a json.
                    response.render("produtos/lista", {lista: results});
                },
                json: function(){
                    response.json(results);
                }
            });
    });

        console.log('Requisição ao banco de dados realizada com sucesso');
        connection.end();
        console.log('Requisição a página url/produtos efetuada com sucesso.');
    });

    app.get('/produtos/formulario', function(request, response){
        console.log('Requisição ao formulário efetuada com sucesso.');
        response.render('produtos/formulario');

    });

    app.post('/produtos', function (request, response) {

        var produto = request.body;

        var validatorTitulo = request.assert('título', 'Título deve ser preenchido.'); 
    validatorTitulo.notEmpty();
        var erros = request.validationErrors();

        if(erros){
            console.log('errors');
            response.render('produtos/formulario');
            return;
        }

        console.log(produto);
        var connection = app.infra.connectionFactory();
        var ProdutosDAO = new app.infra.ProdutosDAO(connection);

        ProdutosDAO.salva(produto, function(erros, resultado){
            response.redirect("/produtos"); 
        });

        connection.end();
    });
};

Erro gerado preenchendo ou não o campo título.

[ { location: 'params',
    param: 'título',
    msg: 'Título deve ser preenchido.',
    value: undefined } ]
1 resposta
solução!

Oi pessoal, Acabei refletindo sobre o assunto e acabei encontrando o erro. Eu tinha digitado título com acento agudo.

RsRs. Valeu