Nodejs mysql pool错误无法调用undefined的方法查询

时间:2015-05-28 22:42:12

标签: mysql node.js

试图做一个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,我该如何纠正?

2 个答案:

答案 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将无效,几乎肯定会导致错误。