6
respostas

o retorno do req.body não esta trazendo os dados do campo descrição.

-- express.js
var express = require('express');
var load = require('express-load');
var bodyParser = require('body-parser');

module.exports = function() {

    var app = express();

    app.set('view engine','ejs'); 
    app.set('views','./app/views'); 
    app.use(bodyParser.urlencoded({extended: true}));

    load('routes',{cwd: 'app'})
        .then('infra')
        .into(app);

    return app;
};
-- produtos.js
module.exports = function(app){
    app.get('/produtos',function(req,res){
        var connection = app.infra.connectionFactory();
        var produtosDAO = new app.infra.ProdutosDAO(connection);
        produtosDAO.lista(function(err, results) {
            res.render('produtos/lista',{lista:results});
        }); 
        connection.end();
    });

    app.get('/produtos/form',function(req, res) {
        res.render('produtos/form');
    });

    app.post('/produtos/salva',function(req, res) {
        console.log('Vai salvar formulario');
        var produto = req.body;
        console.log(produto);
/*
        var connection = app.infra.connectionFactory();
        var produtosDAO = new app.infra.ProdutosDAO(connection);
        produtosDAO.salva(produto,function(err, resultados){
            produtosDAO.lista(function(err, results) {
                res.render('produtos/lista',{lista:results});
            }); 
        });
*/
    });
}
6 respostas

Oi Franco, tudo bem? Apenas o campo descrição não está sendo enviado? Cola seu HTML aqui pra gente dá uma olhada por favor?

Olá,

Sim, apenas o campo descrição não retorna. Os campos TITULO e PRECO retornam normalmente.

Segue abaixo o HTML.

<html>
    <body>
        <form action="/produtos/salva" method="post">
            <div>
                <label for="titulo">Titulo</label>
                <input type="text" name="titulo" placeholder="Coloque um titulo"/>
            </div>
            <div>
                <label for="preco">Preço</label>
                <input type="text" name="preco" placeholder="150.25"/>
            </div>
            <div>
                <label for="descricao">Descrição</label>
                <textarea cols="40" rows="5" id="descricao" nome="descricao" placeholder="Coloque uma descrição"></textarea>
            </div>

            <input type="submit" value="Gravar"/>
        </form>
    </body>
</html>

Da uma olhada no name do textarea de descricao e no valor da sua tabela no banco de dados, pra ver se estao iguais.

Franco, como o Leandro falou, o problema é o atributo name que você sem querer escreveu nome, a correção é só trocar o o pelo a.

Como está agora:

 <textarea cols="40" rows="5" id="descricao" nome="descricao" placeholder="Coloque uma descrição"></textarea>

Como deverá estar para funcionar:

 <textarea cols="40" rows="5" id="descricao" name="descricao" placeholder="Coloque uma descrição"></textarea>

Esses erros de digitação as vezes pregam peças na gente né... Mas faz parte! Bons estudos!

Olá,

Obrigado pelo rápido retorno.

corrigi de "nome" para "name" e funcionou certinho.

Essa é uma daquelas situações que a gente olha olha e não vê o erro na nossa cara. É quando precisamos de um olho de alguém de fora para ver o obvio. rsrsrs

Muito obrigado.

Oi Franco, é isso ai. Um pedido, lembra sempre de marcar o post que resolveu sua dúvida como solução do tópico tá bem? Isso ajuda a gente a saber logo de cara qual foi a solução e se teve solução.

Abraço!