我想知道是否有可能在另一个查询的回调中查询数据库。例如,
connection.connect();
connection.query(query, [param1, param2], function(err, rows, fields) {
// do something
connection.query(new_query, function(err, rows, fields) {
// do something else
});
});
connection.end();
我在此代码的第4行收到Error: Cannot enqueue Query after invoking quit.
错误。所以我想知道这是否可行。
答案 0 :(得分:2)
您的问题说明:
js逐行执行。按顺序,那将是:
然后,当对数据库的查询完成时,执行2.中的回调,但3.之前执行,结束连接。所以在回调中的那一点,你不能再进行另一个查询,因为连接已经关闭。
<强>解决方案:强>
connection.end()
应位于最后一个嵌套查询
固定代码:
connection.connect();
connection.query(query, [param1, param2], function(err, rows, fields) {
// do something
connection.query(new_query, function(err, rows, fields) {
// do something else
connection.end();
});
});
答案 1 :(得分:2)
是的,您可以在回调中发出查询。您收到错误是因为connection.end调用不在回调中。你现在拥有它的地方,它将在第一次回调激活之前被调用。
答案 2 :(得分:0)
我尝试用于connection.release();
pool.getconnection(function(err,connection){
if(!err)
{
connection.release();//after this perform query operation
connection.query(query, [param1, param2], function(err, rows, fields) {
// do something
connection.query(new_query, function(err, rows, fields) {
// do something else
});
});
}
})