2
respostas

Aula 4 - 302 mas não acrescenta ao banco de dados

Todo o código para cadastrar a partir do terminal está rodando normalmente, porém ele não está adicionando nada ao banco de dados. Segue os códigos:

var http = require('http');

var configuracoes = {
    hostname:'localhost',
    port:'3000',
    path:'/produtos',
    method: 'post',
    headers: {
        'Accept':'application/json',
        'Context-Type': 'application/json'
    }
};

var cliente = http.request(configuracoes, function(res){
    console.log(res.statusCode);
    res.on('data', function(body){
        console.log('Corpo:' +body);
    });

});
var produto = {
    titulo: 'Um pouco de NodeJs',
    descricao: 'Um livro ai',
    preco : 23.90

}

cliente.end(JSON.stringify(produto));

Parte do post nas rotas

(...)
app.post('/produtos',function(req,res){
        var produto = req.body;

       var connection = app.infra.connectionFactory();
        var produtosDAO = new app.infra.ProdutosDAO(connection);
        produtosDAO.salva(produto,function(err,results){
            res.redirect('/produtos');
        });
        connection.end();
    });
2 respostas

Pelo que eu vi do seu código, você não está tratando os erros (no caso de haver um problema no produtosDAO.salva.

Faça o seguinte teste e verifique se aparece algo em seu console

app.post('/produtos',function(req,res){
        var produto = req.body;

       var connection = app.infra.connectionFactory();
        var produtosDAO = new app.infra.ProdutosDAO(connection);
        produtosDAO.salva(produto,function(err,results){
      //Teste
     if (err){
        console.log('houve um erro');
               console.log(err);
    }
            res.redirect('/produtos');
        });
        connection.end();
    });

Muito obrigado Daniel. O erro encontrado foi esse

code: 'ER_PARSE_ERROR',
  errno: 1064,
  sqlMessage: 'You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near \'\' at line 1',
  sqlState: '42000',
  index: 0,
  sql: 'insert into livros set ' }

Não entendi até o momento qual foi o problema porque na hora de cadastrar via html, esse método funciona perfeitamente e cadastra, já no terminal está dando esse problema.