试图做一个mysql池但是我被卡在了connection.query部分。
var express = require('express');
var app = express();
var mysql = require('mysql');
app.use(express.static(__dirname));
var pool = mysql.createPool({
host : 'localhost',
user : 'asdf',
password : 'asdf',
database : 'cr',
connectionLimit : 100
});
app.get('/', function(request, response) {
pool.getConnection(function(err,connection){
connection.query("select * from configuration where client_id =" + request.user,function(err,rows){
connection.release();
if(!err) {
response.json(rows);
}
});
connection.on('error', function(err) {
response.json({"code" : 100, "status" : "Unable to connect"});
return;
});
connection.release();
});
});
似乎是在connection.query停止,因为连接显示为null,我该如何纠正?
答案 0 :(得分:0)
我建议您重新构建代码以便进行更好的调试,以便您可以找出connection
回调函数中pool.getConnection
似乎为空的原因。
通常,回调函数中的优良做法是在处理响应之前验证您是否获得了有效的响应。
在您的情况下,检查err
是第一步。您还应该检查是否存在connection
以及query
等属性。我建议您调试以下问题:
pool.getConnection(function(err, connection) {
if (err) {
console.log(err);
} else if (connection && 'query' in connection) {
// process connection and connection.query
}
}
答案 1 :(得分:0)
这个片段并不完全清楚,但初始SQL选择(select * from configuration where client_id =
)期望request
设置request.user
....但您的快速路由中没有任何地方显然request.user
正在设定之中。如果request.user
显示为空,则生成的SQL将无效,几乎肯定会导致错误。