Javascript 如何正确地在node.js中创建数据库流
我是node.js世界的新手,所以我的问题对你们来说可能很奇怪。 我有一个非常简单的场景: 1) 在数据库中插入行,获取此行的ID 2) 插入多行,每个行都使用我们之前得到的ID 流量有问题。。。阶段2在我们从阶段1得到响应之前开始,或者在我们完成插入之前所有阶段都完成(调用connection.end()) 我尝试使用异步模块,但它对我没有帮助 让我们看看代码: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
// 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);
});
});
});
更好的修复方法可能是在进程结束时关闭连接