javascript - 如何正确地在node.js中使数据库流动

标签 javascript mysql multithreading node.js

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

你能帮我解决一下吗?

最佳答案

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

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

关于javascript - 如何正确地在node.js中使数据库流动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11917194/

相关文章:

javascript - setAttribute 和 htmlElement.attribute ='value' 的区别

mysql - 我在这个 mySQL 外键设置中做错了什么?

linux - 多线程 Bash If 语句

java - 线程同步说明

php - 将 php POST 数组分配给 Javascript 数组

javascript - 如何在 ASP.NET Core MVC 中将 js 字符串发布到 C#

mysql - 尝试为大型表的列添加全文搜索时,XAMPP 的 MariaDB 挂起

php - 如何在 MySQL/PHP 中插入和读取时间/日期?

java - JTextArea 无法在多线程中工作 - java

javascript - d3重新渲染图表退出不是函数