为什么我不能从一个mysql查询发送一个响应Express?

我将保持代码简单,但基本上,我有一个运行Express的Node.js服务器。 Express使用池(和mysql npm包)连接到MySQL数据库。 这是我的服务器看起来像(我没有了无聊的要求,而不是保持这个简单)。 这是服务器处理的唯一路由。

server.all('/test', function (req, res, next) { pool.getConnection(function (err, conn) { if (err) { console.log(err); } else { conn.query("select * from spwp_appusers where id=46", function (err, rows) { conn.release(); if (err) { console.log(err); } else { res.send(200); } }); } }); next(); }); 

但是,当我运行这个代码时,服务器试图执行res.send(200); 但中断,我得到以下错误:

 /usr/lib/node_modules/mysql/lib/protocol/Parser.js:77 throw err; // Rethrow non-MySQL errors ^ Error: Can't set headers after they are sent. at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:335:11) 

有谁知道发生了什么? 为什么我不能发送回复? 即使当我使用callback,我得到这个错误。

我认为问题在于接下来。 尝试改变next(); 里面getConnection()

上面的错误显示在我的情况不匹配我的MySQL用户,密码,数据库名称,所以请检查您的MySQL凭据。

var pool = mysql.createPool({host:'localhost',user:'root',password:'',database:'dbname',multipleStatements:true});