Galera, boa noite! Eu estou desenvolvendo um sistema simples de persistência de clientes, produtos e venda. Fiz uma API usando o express e o módulo do Mysql, porém algo MUITO estranho etá ocorrendo e eu realmente não tenho ideia do que possa ser:
Eu possuo essa rota:
app.post("/cliente/salvar", function(request, response){
let cliente = request.body;
let connection = dbConnection();
if(cliente.id){
clienteFactoryDAO.alterarCliente(connection, cliente, function(erro, result){
response.send(result);
if(erro != null) console.log(erro);
connection.end();
});
}else{
clienteFactoryDAO.salvarCliente(connection, cliente, function(erro, result){
response.send(result);
if(erro != null) console.log(erro);
connection.end();
});
}
});
Note que a mesma faz referência a um método do módulo clienteFactoryDAO... o código desse método está assim:
this.salvarCliente = function(connection, objeto, callback){
let sqlEndereco = utilCliente.createSaveAdressQuery(objeto.endereco);
console.log(sqlEndereco);
connection.query(sqlEndereco, function (error, results){
if(error) throw error;
objeto.id_endereco = results.insertId;
//Depois que salva o endereco, usa-se o id persistido e salva-se o cliente
let sql = utilCliente.createSaveQuery(objeto);
console.log(sql);
connection.query(sql, callback);
})
}
Notem que eu fecho a conexão no segundo 'connection.query', dentro do callback, isso porque eu não posso fechar antes, visto que preciso primeiro salvar o endereço para aquele cliente e depois, salvar o cliente.
Pois bem, o erro: O endpoint acessado é o correto mas no momento que executa-se o connection.query(), ele executa a query de inserçâo do produto, eu não tenho ideia do porquê! Eu já li a documentação inteira do módulo 'mysql' no GitHub e, ainda não obtive sucesso em descobrir! Será que estou fechando conexão direito? Já tentei usar o método destroy e nada!
Obrigado desde já e peço desculpas se não fui claro o suficiente em minha dúvida