同时保存两件事 - Node Js

时间:2017-11-06 01:02:23

标签: mysql node.js express

我目前正在开发一个系统,用于存储客户的信息......其中一个信息是客户的地址。为此,我在我的数据库中创建了两个表:Address和Custumer。 我使用存储在客户表中的地址作为外键......到目前为止一切顺利。问题是我需要先保存地址,然后获取结果id(id为自动增量)并创建查询以使用该id保存客户,但我需要在使用node的同一函数中执行此操作,unfortunelly ,当我尝试这样做时,我收到了这个错误:

'错误:调用quit后无法将Query排入队列。'

以下是我的代码:

this.save = function(connection, object, callback){

    let sqlAdress = utilClient.createSaveAdressQuery(object.address);

    connection.query(sqlAdress , (error, results) => {
        if(error) throw error;
        objeto.address.id = results.insertId;

        //After that the address is saved, I try to save the client
        let sql =  utilCliente.createSaveQuery(object);
        connection.query(sql, (callback));
    })

}

有谁知道如何帮助我?提前谢谢!

这是我的回调代码:

app.post("/save", function(request, response){

  var custumer = request.body;

  var connection = dbConnection();

  eventoBanco.salvar(connection, custumer, function(error, result){
    response.send(result);
    if(error != null) console.log(error);
  });

  connection.end();
});

1 个答案:

答案 0 :(得分:0)

我认为我能够通过这样做来解决这个问题:

clienteFactoryDAO.alterar(connection, cliente, function(erro, result){
            response.send(result);
            if(erro != null) console.log(erro);
            connection.end();
});

您现在可以注意到,我在传递给函数的回调中关闭了连接查询。我的错误就像@Himanshusharma很好地指出:我正在关闭回调函数之外的连接,如你所知,JavaScript是异步的,所以它很快关闭了连接,当我需要它时,我什么也没得到。在此先感谢,我希望它能在某些时候帮助某人