Como usar o express-validator 4.3


(Pedro Henrique Sousa da Rocha ) #1

Bom eu tenho 2 códigos, um que implementa a versão antiga do express-validator e outra que usa a nova. A mais nova não está funcionando. As duas estão abaixo, pras vocês verem se tem algum erro:

esse tá ok
module.exports = (express) => {
express.get(’/add-noticias’, (req, resp) => {
resp.render(‘admin/form_add_noticia’, {validacao: {}})
})

express.post(’/noticias/salvar’, (req, resp) => {
let conteudo, mysql, noticiasModel, erros
req.assert(‘titulo’, ‘O titulo é necessário’).notEmpty()
req.assert(‘noticia’, ‘O que você quer cadastrar mesmo?’).notEmpty()
req.assert(‘resumo’, ‘Toda notícia precisa de um resumo!’).notEmpty()
req.assert(‘autor’, ‘Quem escreveu esse artigo?’).notEmpty()
req.assert(‘data_noticia’, ‘Quando foi que isso ocorreu??’).notEmpty()

erros = req.validationErrors()

if (erros) {
  resp.render('admin/form_add_noticia', {validacao: erros})
  return
}

Form

<html lang="pt-br">
	<head>
		<meta charset="utf-8"/>
		<title>Formulário de cadastro de Notícias</title>
	</head>
<body>

	<h1>Adicionar notícia</h1>

	<% if (validacao) { %>
		<ul>
		<% for (let i=0; i < validacao.length; i++) { %>	
			<li><%= validacao[i].msg%></li>
		<%}%>
		</ul>
	<%}%>
	
	<form action="/noticias/salvar" method="post">
		<label>Título da notícia</label>
		<input type="text" name="titulo" id="titulo">
	

		<br>

		<label>Notícia</label>
		<textarea type="text" cols="30" rows="5" id="noticia" name="noticia"></textarea>


		<br>

		<label> Resumo da Notícia</label>
		<textarea type="text" cols="30" rows="5" id="resumo" name="resumo"></textarea>

		<br>

		<label>Autor</label>
		<input type="text" id="autor" name="autor">

		<br>

		<label>Data da Notícia</label>
		<input type="date" id="data_noticia" name="data_noticia">

		<br>

		<button type="submit">Enviar</button>

	</form>

</body>

porém a versão acima não é mais recomendada, então eu implementei a versão 4.3, segue abaixo:

const {check, validationResult} = require(‘express-validator/check’);
module.exports = (express) => {
express.get(’/add-noticias’, (req, resp) => {
resp.render(‘admin/form_add_noticia’, {validacao: {}})
})

express.post(’/noticias/salvar’, [
check(‘titulo’, ‘titulo necessário’).exists(),
check(‘noticia’, ‘entre com a notícia’).exists(),
check(‘resumo’, ‘qual o resumo’).exists(),
check(‘autor’, ‘quem escreceu isso?’).exists(),
check(‘data_noticia’, ‘qundo isso aconteceu?’).exists()
], (req, resp) => {
let conteudo, mysql, noticiasModel, erros

erros = validationResult(req)
if (!erros.isEmpty()) {
  let arrayErros = erros.mapped()
  let mensagens = arrayErros
  console.log(arrayErros)
  return resp.render('admin/form_corrige_noticia', {erros: mensagens})
}

Form

<html lang="pt-br">
	<head>
		<meta charset="utf-8"/>
		<title>Formulário de cadastro de Notícias</title>
	</head>
<body>

	<h1>Adicionar notícia</h1>
	<form action="/noticias/salvar" method="post">
		<label>Título da notícia</label>
        <input type="text" name="titulo" id="titulo">
        <br>
        <%=erros[0]%>
	

		<br>

		<label>Notícia</label>
        <textarea type="text" cols="30" rows="5" id="noticia" name="noticia"></textarea>
        <br>
        <%=erros[1]%>


		<br>

		<label> Resumo da Notícia</label>
        <textarea type="text" cols="30" rows="5" id="resumo" name="resumo"></textarea>
        <br>
        <%=erros[2]%>

		<br>

		<label>Autor</label>
        <input type="text" id="autor" name="autor">
        <br>
        <%=erros[3]%>

		<br>

		<label>Data da Notícia</label>
        <input type="date" id="data_noticia" name="data_noticia">
        <br>
        <%=erros[4]%>

		<br>

		<button type="submit">Enviar</button>

	</form>

</body>

o problema é que o código nunca cai no if, nunca, mesmo quando está errado, e as mensagens não aparem na tela quando tem erros no form, não sei o pq, se puderem ajudar será bom.

Att, Pedro