节点JS mysql查询第二次执行时给出错误

mri*_*rid 1 javascript mysql node.js express node-mysql

我正在尝试使用express在节点中制作REST api。当我第一次在浏览器中打开URL时,它运行良好,并为我提供了正确的输出。但是,当我第二次点击api网址时,应用程序崩溃并显示以下错误:

events.js:141 throw er; //未处理的“错误”事件^

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

这是我正在使用的代码:

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);
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我我在做什么错吗?

Shr*_*yak 5

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

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

PS- connection.connect()连接断开时需要调用。