节点js mysql查询在第二次执行时出错

时间:2016-12-30 15:33:01

标签: javascript mysql node.js express node-mysql

我正在尝试使用express在节点中创建REST api。当我第一次在浏览器中打开网址时,它运行正常,并给我正确的输出。但是当我第二次点击api url时,应用程序崩溃并出现错误:

  

events.js:141         扔掉//未处理的'错误'事件         ^

     

错误:调用quit后无法排队握手。

这是我正在使用的代码:

var express = require('express');
var mysql = require('mysql');

var app = express();
var connection = mysql.createConnection({
  host: 'localhost',
  user: 'USER_NAME',
  password: 'PASSWORD'
});

app.use(express.static(__dirname + '/public'));
var port = 3333;

app.get('/api/users/:user_id', function(req, res){
    var lead_id = req.params.user_id;

    connection.connect();

    connection.query('use DB_NAME;', function (err) {
        if(err) throw err;

        connection.query('select * from users where user_id = ' + user_id, function (err, rows) {
            if(err) throw err;

            res.json(rows);
            connection.end();
        });
    });
});

app.listen(port);
console.log("The app is running on port " + port);

有人能告诉我我做错了什么吗?

2 个答案:

答案 0 :(得分:4)

只需删除connection.connect()connection.end()即可。然后它应该工作。

connection.connect()应该被调用一次或不被调用。因为connection.query会连接,所以它没有连接。

PS - 当连接丢失时需要调用connection.connect()

答案 1 :(得分:0)

尝试this删除还原剂连接。这是谷歌搜索错误消息的第一个结果 - 在询问之前总是尝试谷歌错误消息。