如何正确地在node.js中创建db流

时间:2012-08-11 19:58:16

标签: javascript mysql multithreading node.js

我是node.js世界的新手,所以我的问题对你来说很奇怪。 我有一个非常简单的场景: 1)在db中插入行,获取此行的ID 2)插入多个行,每个行都使用我们之前获得的ID

流程存在问题......在我们从第1阶段得到响应或者所有阶段完成之前(在调用connection.end()之前)阶段2开始。

我尝试使用异步模块,但它对我没有帮助 我们来看看代码:

// open connection

conn.query('INSERT INTO receipt SET ?', {postid: postGUID, body: body}, function(err, result) {
    if (err) throw err;
        console.log("ID: "+result.insertId );

    conn.query('INSERT INTO imgs SET ?', {postid: result.insertId, link: imgSrc}, function(err, result) {
        if (err) throw err;

    });
});

conn.end( function(err) {
    console.log("CLOSE CONNECTION"); 
    console.log(err);
});
你可以帮帮我吗?

1 个答案:

答案 0 :(得分:2)

由于conn.query很可能是异步的,因此在完成查询之前关闭连接。快速修复可能如下。

conn.query('INSERT INTO receipt SET ?', {postid: postGUID, body: body}, function(err, result) {
    if (err) throw err;
        console.log("ID: "+result.insertId );

    conn.query('INSERT INTO imgs SET ?', {postid: result.insertId, link: imgSrc}, function(err, result) {
        if (err) throw err;

       conn.end( function(err) {
          console.log("CLOSE CONNECTION"); 
          console.log(err);
       });
   });
});

更好的解决方法可能是在流程结束时关闭连接。