试图做一个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处停止,因为连接显示为空,我该如何纠正?

最佳答案

我建议您重组代码以进行更好的调试,以便找出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
  }
}

关于mysql - Node.js MySQL池错误无法调用未定义的方法查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30518248/

10-16 20:55