0

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

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

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

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

你能帮我吗?

4

1 回答 1

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

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

于 2012-08-11T21:05:27.180 回答