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

tratamento de erros mysql

module.exports = (app)=>{
  app.get("/pagamentos",(req,res)=>{
       res.send('<h1>Ouvindo requisições da rota através do controller /</h1>');
       console.log('Rota /pagamentos');
  });

  app.post("/pagamentos/novo",function(req,res){
       let pagamento = req.body;

       pagamento.status="Create with success";
       pagamento.create_data = new Date;

       let conn = app.persist.connectionFactory();
       let pagamentosDao = new app.persist.pagamentoDao(conn);

       pagamentosDao.salva(pagamento,function(erro,result){
           if(erro){
              res.status(400).send(erro);
           }

           res.status(200).send(pagamento);

       });

    });
}

ao tentar enviar a moeda com mais de 3 digitos não retorna nada, aliás a requisição não chega

8 respostas

Olás, Júlio.

No callback do método salva adiciona a palavra debugger, da mesma forma que fiz abaixo:

pagamentosDao.salva(pagamento,function(erro,result){
  debugger;

  if(erro){
    res.status(400).send(erro);
  }

  res.status(200).send(pagamento);
});

Aí quando você for subir a aplicação você sobe avisando pro node que você quer debugar o código. Pra fazer isso você só precisa rodar o seguindo comando no terminal (não pode ter essa aplicação rodando):

node debug  index.js

Show! Agora você consegue debugar sua aplicação. Pra isso você vai precisar dos seguintes comando:

c - continua a aplicação n - próximo passo

Por favor, vai utilizando o c até o seu código chegar na linha que adicionamos o debugger. No momento que chegar nessa linha você usará o comando repl no terminal, dessa forma você poderá ver o estado de cada variável, apenas digitando o nome delas.

Se não conseguir a achar o problema utilizando o debugger avisa aí que procuramos outro caminho :)

Ah! Se tiver curiosidade de saber mais coisas sobre o debugger você pode perguntar mais ou dar uma olhada aqui: https://nodejs.org/dist/latest-v6.x/docs/api/debugger.html

solução!

Oi xará, Blz? =D

Essa dica que o Marco deu sobre o debugger é muito legal mesmo.

Uma outra forma de verificar o que está acontecendo é printando o erro que a chamada ao banco está retornando.

pagamentosDao.salva(pagamento,function(erro,result){
           if(erro){
              res.status(400).send(erro);
              console.log(erro);
              return;
           }

Isso deve te ajudar também,

Eu imagino que seu problema seja um erro no json, no curl ou alguma coluna no banco com nome diferente do json, pois eu rodei seu código aqui e funcionou sem problemas. =)

Faz esses testes aí e depois fala aqui pra gente o que vc encontrou. blz?

Abraço!

Utilizando o debug notei que quando coloco o debug dentro do callback ele não chega a passar, quando coloco fora do método salvar ele para, mas ao fazer o step ele entra em bibliotecas internas.

segue abaixo o código do DAO

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

pagamentosDao.prototype.salva=function(pagamento,callback){
    this._conn.query("INSERT INTO pagamento set ?",pagamento);
}

pagamentosDao.prototype.lista=function(callback){
    this._conn.query("SELECT * FROM pagamento");
}

module.exports = function(){
    return pagamentosDao;
}

o que acabo por entender , o erro está ao chamar o callback, mas o que exatamente não estou conseguindo localizar

Minhas confs

  "dependencies": {
    "body-parser": "^1.17.1",
    "consign": "^0.1.4",
    "express": "^4.15.2",
    "express-validator": "^3.2.0",
    "mysql": "^2.13.0"
  }

node versão 6.10.2

Ok, achei o erro nesse caso, não estava passando o callback na instrução query da conexão

Muito bom, Júlio.

Show de bola, espero que o debug tenha te ajudado. Eu uso ele bastante para descobrir os erros no meu código :-)