Os campos do formulário não deveriam também ser validados no momento de edição de um livro? Atualmente pode-se, por exemplo, editar um livro e retirar o seu título ou preço.
Não sei se esta alteração será feita nas próximas aulas, mas segue as alterações que realizei para corrigir este ponto:
Arquivo de rotas:
// rotas.js
app.put(
'/livros',
[
check('titulo')
.isLength({ min: 5 })
.withMessage('O título do livro deve ter pelo menos 5 caracteres.'),
check('preco')
.isCurrency()
.withMessage(
'O preço do livro deve ter um valor monetário válido.'
),
],
livroControlador.edita()
);
Arquivo de Livro Controlador:
// livro-controlador.js
edita() {
return (req, resp) => {
console.log(req.body);
const livroDao = new LivroDao(db);
const erros = validationResult(req);
if (!erros.isEmpty()) {
return resp.marko(require('../views/livros/form/form.marko'), {
livro: req.body,
errosValidacao: erros.array(),
});
}
livroDao
.atualiza(req.body)
.then(resp.redirect('/livros'))
.catch(erro => console.log(erro));
};
}