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 } ]