为什么我不能从一个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});
- 无法使用node.js v0.12.7,express 4,body-parser,bootstrap 3检索POST数据
- 为什么快速的默认error handling程序捕获从可读stream发射时的错误?
- 在nodejs中查找所有sorting顺序
- 限制速度以防止ExpressJS中的恶意行为
- 正则expression式来捕获用逗号分隔的逗号分隔数字
- Passport.js twitter身份validation导致500错误,req.session未定义
- NodeJS redis连接会话标识在应该保持不变时被重新生成
- 如何用nodejs,express和less-middleware来编译2+不同的LESS风格?
- 如何添加unique_id到我的快递节点日志与Winston没有重构的一切?