1
resposta

Modulo Mysql executando script errado

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

1 resposta

Olá, Matheus.

Por favor, tente alterar a `connection.end() conforme está no código abaixo e me diz se deu tudo certo:

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();
        }

    });