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

Sem erros, mas sem inserção

galera, o que pode haver de errado nisso? Não é gerado nenhum erro, mas também não é feito a inserção no BD.

router.post('/cpf',function(req, res, next){
  var person = req.body;
  var conn = connFactory();
  var moduloDAO  = require('../infra/pessoasDAO')();
  var pessoasDAO = new moduloDAO(conn).salva(person,function(){
    res.redirect('/list');
  });  
});

O console.log abaixo é printado e sai um JSON com os dados que eu passo no form. Mas nada de inserir no BD.

function PessoasDAO(conn){
    this._conn = conn;
}

PessoasDAO.prototype.lista = function(callback){
    this._conn.query('select * from pessoas', callback);
}

//PRESTE ATENÇÃO AQUI!
PessoasDAO.prototype.salva = function(person, callback){
    console.log(person);
    this._conn.query('insert into pessoas set ?' , person, callback);
}
module.exports = function(){
    return PessoasDAO;
}


/*
module.exports = function(conn,callback){
    this.lista = function(conn,callback){
         conn.query('select * from pessoas', callback);
    }
    return this;
}
*/
5 respostas
solução!

Olá, Marcos.

Pra conseguir ver qual erro está dando do lado do banco de dados precisamos tratar o erro que está vindo na função anônima (callback). Nesse função anônima você recebe como primeiro parâmetro o erro. Por favor, faça um console.log nesse parâmetro de erro pra entendermos o que está acontecendo, conforme o código abaixo:

var pessoasDAO = new moduloDAO(conn).salva(person,function(error){
    console.log('Qual é o erro:', error)
    res.redirect('/list');
  });

Chegou a instalar o body-parser com o NPM e configurar na sua app do Express?

Instalei o body parser e meu app.js esta assim:


var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var index = require('./routes/index');
var users = require('./routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');


// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', index);
app.use('/users', users);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

Também obtive o erro seguindo a ideia do Marco.

o erro é : Error: ER_BAD_FIELD_ERROR: Unknown column 'name' in 'field list'

consertei galera. Muito obrigado

Muito bom, Marco. Se aparecer mais dúvidas não deixe de postar :-)