Ao realizar a validação com express validator eu recebo como erro os campos que estão preenchidos, fazendo com que seja exibido na tela um falso alerta de erro. O que estou fazendo errado?
var express = require('express');
var load = require('express-load');
var bodyParser = require('body-parser');
var expressValidator = require('express-validator');
module.exports = function() {
var app = express();
app.set('view engine', 'ejs');
app.set('views', './app/views');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(expressValidator());
load('routes', { cwd: 'app' })
.then('factory')
.then('database')
.into(app);
return app;
};
module.exports = function(app) {
var listarProdutos = function(req, res) {
var connection = app.factory.connectionFactory();
var produtoDAO = new app.database.produtoDAO(connection);
produtoDAO.lista(function(err, result) {
if (err) {
console.log("Erro ao salvar o produto");
return;
}
res.render('produtos/lista', { lista: result ? result : [] });
});
connection.end();
};
app.get('/produtos', listarProdutos);
app.get('/produtos/cadastro', function(req, res) {
res.render("produtos/cadastro", { errosParams: [], produto: {} });
});
app.post('/produtos/salva', function(req, res) {
var produto = req.body;
req.assert('titulo', 'Titulo é obrigatório').notEmpty();
req.assert('preco', 'Formato inválido').isFloat();
var erros = req.validationErrors();
console.log(erros);
if (erros) {
res.render('produtos/cadastro', { errosParams: erros, produto: produto });
return;
}
var connection = app.factory.connectionFactory();
var produtoDAO = new app.database.produtoDAO(connection);
produtoDAO.salva(produto, function(err, result) {
if (err) {
console.log("Erro ao salvar o produto");
res.render('produtos/cadastro');
return;
}
res.format({
html: function() {
res.redirect('/produtos/cadastro', { errosParams: [], produto: {} });
},
json: function() {
res.json(result);
}
});
});
});
};
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Cadastro de Livros</title>
<!-- Bootstrap CSS -->
<link href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body class="container">
<h1 class="text-center">Cadastro de livros</h1>
<div class="erros">
<% if(errosParams) {%>
<%for(i=0; i < errosParams.length; i++) {%>
<div class="alert alert-danger alert-dismissible col-sm-offset-2 col-sm-10" role="alert"><strong><%=errosParams[i].param %></strong> - <%=errosParams[i].msg %>
<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
</div>
<% } %>
<% } %>
</div>
<form class="form-horizontal" action="/produtos/salva" method="post">
<div class="form-group">
<label for="titulo" class="col-sm-2 control-label">Título</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="titulo" value="<%produto.titulo%>" placeholder="Insira o titulo">
</div>
</div>
<div class="form-group">
<label for="preco" class="col-sm-2 control-label">Preço</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="preco" placeholder="Insira o preço" value="<%produto.preco%>" min="0.01" step="0.01" value="0.0">
</div>
</div>
<div class="form-group">
<label for="descricao" class="col-sm-2 control-label">Descrição</label>
<div class="col-sm-10">
<textarea class="form-control" id="descricao" rows="3" placeholder="Fale sobre o livro"><%produto.descricao%></textarea>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-primary btn-lg">Gravar</button>
</div>
</div>
</form>
<!-- jQuery -->
<script src="//code.jquery.com/jquery.js"></script>
<!-- Bootstrap JavaScript -->
<script src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
</body>
</html>