我有一个有效的代码,但我不认为它是一个很好的实现,而另一个是好的。
这是有效的:
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
}
<!DOCTYPE html>
<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>
</html>
但这是旧版本的框架,我想这样做,新的方式:
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})
}
<!DOCTYPE html>
<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>
</html>
问题是,即使表单错误,代码生成器也会转到if / else,所以我该怎么办?
感谢您的帮助!
佩德罗