Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Produto não está salvando no MySQL

por favor solicito auxilio pois os dados do produto não estão sendo salvos no banco: segue códigos: produto.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(erros,resultados){
            res.render('produtos/lista',{lista:resultados});
        });

        connection.end();    
    });

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

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

        var connection = app.infra.connectionFactory();
        var produtosDAO = new app.infra.produtosDAO(connection);
        produtosDAO.salva(produto,function(erros, resultados){
            produtosDAO.lista(function(erros, resultados){
                res.render('produtos/lista',{lista:resultados});
            });
        });

    })
}

produtosDAO.js

function ProdutosDAO(connection){
    this._connection = connection;
}

ProdutosDAO.prototype.lista = function(callback){
    this._connection.query('select * from produtos', callback);
}

ProdutosDAO.prototype.salva = function(produto,callback){
    this._connection.query('insert into produtos set ?',produto,callback);
}

module.exports = function(){
    return ProdutosDAO;

}

express.js

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



module.exports = function(){
    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;
}

connectionFactory.js
var mysql = require('mysql');
function createDBConnection(){
    return mysql.createConnection({
        host : 'localhost',
        user : 'root',
        password : '123456',
        database : 'casadocodigo_nodejs' 
        });
}

module.exports = function(){
    return createDBConnection;
}
4 respostas

Tem que debugar... no callback do insere, vc recebe um argumento chamado erros. O melhor é vc dar um console.log nele e analisar a mensagem.

Para debugar, você vai precisar fazer a seguinte alteração na sua rota /produtos/salva

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

        var connection = app.infra.connectionFactory();
        var produtosDAO = new app.infra.produtosDAO(connection);
        produtosDAO.salva(produto,function(erros, resultados){

        if (erros){
        console.log(erros);
            res.send(erros);
           return;
    }

            produtosDAO.lista(function(erros, resultados){
                res.render('produtos/lista',{lista:resultados});
            });
        });

    })

Rodrigo, bom dia!

Eu tive o mesmo problema que você, creio que vale a pena dar uma checada nos nomes dos campos do banco e comparar com os campos do form.ejs.

Tente isso, pode ajudar!

Boas aulas :)

solução!

Obrigado a todos pela ajuda, o erro estava na coluna Id que não tinha definido como auto incremente com isso ele não estava salvando.