使用express-validator 4.3如何?

时间:2018-01-13 21:02:16

标签: javascript node.js validation express express-validator

我有一个有效的代码,但我不认为它是一个很好的实现,而另一个是好的。

这是有效的:

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,所以我该怎么办?

感谢您的帮助!

佩德罗

0 个答案:

没有答案