Validação com Node.Js com banco MongoDB

0 respostas
mongodbnodejs
G

Bom dia, estou com um problema pra fazer a validação. Eu consigo fazer ele aparecer o erro, só que ele reseta todos os campos, e eu queria que continuasse todos os cados e só aparecesse o erro.

router.post("/categorias/edit", (req, res) => {
    //Validação

    var erros = []

    if (!req.body.nome || typeof req.body.nome == undefined || req.body.nome == null) {
        erros.push({ texto: "Nome inválido" })

    }
    if (!req.body.slug || typeof req.body.slug == undefined || req.body.slug == null) {
        erros.push({ texto: "Slug inválido" })
    }
    if (req.body.nome.length < 2) {
        erros.push({ texto: "Nome da categoria muito pequeno" })
    }
    if (erros.length > 0) {
        res.render("admin/editcategorias", {categoria:categoria, erros:erros} )
    } else {
        Categoria.findOne({ _id: req.body.id }).then((categoria) => {
            categoria.nome = req.body.nome
            categoria.slug = req.body.slug
            categoria.save().then(() => {
                req.flash("success_msg", "Categoria editada com succedo")
                res.redirect("/admin/categorias")
            }).catch((err) => {
                res.flash("error_msg", "Houve um erro ao interno ao salvar edição de categorias")
                res.redirect("/admin/categorias")
            })
        }).catch((err) => {
            req.flash("error_msg", "Houve um erro ao editar categoria")
            res.redirect("/admin/categorias")
        })

    }


})

Parte do HTML

{{#each erros}}
    <div class="alert alert-danger">{{texto}}</div>
    {{else}}

    {{/each}}

    <h3>Editar categoria: </h3>
    <div class="card">
        <div class="card-body">
            <form action="/admin/categorias/edit" method="POST">
                <input type="hidden" name="id" value="{{categoria._id}}">
                <label for="nome">Nome: </label>
                <input type="text" id="nome" name="nome" placeholder="Nome da categorias" class="form-control" value="{{categoria.nome}}">
                <label for="slug">Slug: </label>
                <input type="text" id="slug" name="slug" placeholder="Slug da categoria" class="form-control" value="{{categoria.slug}}">
                <br>
                <button class="btn btn-success">Editar categoria</button>
            </form>
        </div>
    </div>
Criado 11 de junho de 2019
Respostas 0
Participantes 1