Node.js和mysqlcallback:查询callback中的查询

所有我想要做的是插入一些数据,如果我的数据库没有,所以我把插入SQL到我的Select SQL的callback函数,但我得到这样的错误:

{[错误:调用退出后无法排队查询]代码:'PROTOCOL_ENQUEUE_AFTER_QUIT',致命:false}

我的代码片段在这里:

db.query('SELECT count(*) as Resultcount FROM tablename WHERE email = ? and password = ?', [post.email, post.password], function(error, result){ if (result[0].Resultcount == 0){ var query2 = db.query('INSERT INTO tablename SET ?', [post], function(err, result) { if(err){ console.log(err); } console.log(result); }); } else{ console.log('have data already'); } }); 

有人能给我一些build议吗? 谢谢

—- —-更新

实际上,select SQL的callback函数并不是一个匿名函数,我关于db.end()的代码片段如下所示:

 var QueryResults = new queryResultFuntion(Back_results); db.query('SELECT count(*) as Resultcount FROM tablename WHERE email = ? and password = ?', [post.email, post.password], QueryResults.queryResult ); db.end(); 

db.end()调用会在SELECT完成后将连接排队,所以当你试图执行内部INSERT查询时,数据库连接将被closures,因此错误PROTOCOL_ENQUEUE_AFTER_QUIT,因为你正在尝试排队连接closures后的新命令。

根据创build连接的方式,您应该在callback中移动db.end()调用,或者如果在程序启动时打开连接,则db.end()调用db.end()