Javascript 如何正确地在node.js中创建数据库流

Javascript 如何正确地在node.js中创建数据库流,javascript,mysql,multithreading,node.js,Javascript,Mysql,Multithreading,Node.js,我是node.js世界的新手,所以我的问题对你们来说可能很奇怪。 我有一个非常简单的场景: 1) 在数据库中插入行,获取此行的ID 2) 插入多行,每个行都使用我们之前得到的ID 流量有问题。。。阶段2在我们从阶段1得到响应之前开始,或者在我们完成插入之前所有阶段都完成(调用connection.end()) 我尝试使用异步模块,但它对我没有帮助 让我们看看代码: // open connection conn.query('INSERT INTO receipt SET ?', {posti

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

流量有问题。。。阶段2在我们从阶段1得到响应之前开始,或者在我们完成插入之前所有阶段都完成(调用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);
});

您能帮我一下吗?

因为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);
       });
   });
});
更好的修复方法可能是在进程结束时关闭连接