我是 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/