Problem in the Result

Asked

Viewed 55 times

0

I am having problems both to present the error message and to insert the information in the BD module - express-Validator

1 - Error in saving information:

Result { Formatter: [Function: Formatter], errors: [] }

2 - Does not display the validation error message in the browser only in the console.

// admin.js


const { check, validationResult } = require('express-validator')
module.exports = (app) => {
 
  app.get('/formulario_inclusao_noticia', (req, res) => {
    res.render('admin/form_add_noticia',{validacao:{},noticia:{}});
  });
 
  app.post('/noticias/salvar', [
 
    check('titulo','Título é obrigatório').not().isEmpty(),
    check('resumo','Resumo é obrigatório').not().isEmpty(),
    check('resumo','Resumo tem que ter entre 10 a 100 caracteres').isLength({ min: 10, max: 100 }),
    check('autor','Autor tem que ter entre 10 a 100 caracteres').isLength({ min: 10, max: 100 }),
    check('autor','Autor é obrigatório').not().isEmpty(),
    check('data_noticia','Data é obrigatório').not().isEmpty(),
    check('noticia','Data é obrigatório').isEmpty()
  ], (req, res) => {
    let noticia = req.body
 
    const errors = validationResult(req);
 
    console.log(errors);
 
    if(errors){
      res.render('admin/form_add_noticia', {validacao: errors, noticia: noticia});
      return
    }
    console.log(validacao);
    let conn = app.config.dbConnection();
    let noticiasModel = new app.app.models.NoticiasDAO(conn)
 
    noticiasModel.salvarNoticia(noticia, (error, result) => {
      res.redirect('/noticias')
    })
  })
}

//form_add_noticia.ejs

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

		<h1>Adicionar notícia</h1>
		<br />
		<% if (validacao) { %>
			<ul>
				<% for(var i = 0; i < validacao.length; i++) { %>
					<li>
						<%= validacao[i].msg %>
						<% console.log(validacao[i].msg) %>
					</li>
				<% } %>	
			</ul>
		<% } %>		

		<form action="/noticias/salvar" method="post">
			<label>Título</label>
			<input type="text" id="titulo" name="titulo" value="noticia" placeholder="Título da Notícia" />
			<br />
			<label>Resumo</label>
			<input type="text" id="resumo" name="resumo" placeholder="Resumo da Notícia" />
			<br />
			<label>Nome autor</label>
			<input type="text" id="autor" name="autor" placeholder="Autor da Notícia" />
			<br />
			<label>Data dos Fatos</label>
			<input type="date" id="data_noticia" name="data_noticia" placeholder="Data da Notícia" />
			<br />
			<label>Notícia</label>
			<textarea id="noticia" name="noticias" rows="5" cols="30"></textarea>
			<br />
			<input type="submit" value="Enviar" />
		</form>

	</body>
</html>

  • What version of express-validator?

  • Excuse my ignorance, but how do I see the express-Validator version? @Sorack

  • In the package.json of your application you can check the dependency libraries and their respective versions

  • @Sorack thanks for the explanation, follow the "version": "6.1.1"

1 answer

1


Apparently you are not following the example available in the documentation of express-validator. In it you can check that your if error checking shall be as follows:

if(!errors.isEmpty()) {
  return res.render('admin/form_add_noticia', { validacao: errors.array(), noticia: noticia });
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.