Olá, na aula 5 do curso "Node.js: Inovando com Javascript no backend", a atividade pede para implementarmos o res.format().
Eu fiz da seguinte maneira:
app.post('/produtos', function(req, res){
var produto = req.body;
req.assert('titulo', 'Título é obrigatório').notEmpty();
req.assert('preco', 'Formato inválido').isFloat();
var erros = req.validationErrors();
if(erros){
res.format({
html: function(){
res.render('produtos/lista', {errosValidacao: erros, produto: produto})
},
json: function(){
res.status(400).json(erros);
}
});
return;
}
var connection = app.infra.connectionFactory();
var ProdutosDAO = new app.infra.ProdutosDAO(connection);
ProdutosDAO.salva(produto, function(err, resultados){
if(err) {
res.redirect('/produtos');
}
res.format({
html: function(){
res.send(produto);
},
json: function(){
res.json(produto);
}
});
});
});
Pra gerar as requisições no formato JSON
, eu uso o app POSTMAN. Quando eu removo o return
da primeira sentença if
, se forem enviadas mais de duas requisições POST
seguidas com os campos titulo
e preco
inválidos, eu ainda consigo cadastrar, mesmo com campos inválidos. Se eu deixo o return
no primeiro if
, isso não acontece. Não consegui entender o motivo. Alguém ajuda?