2016-12-30 63 views
0

我試圖在使用express的節點中創建REST api。當我第一次在瀏覽器中打開url時,它運行良好,並給我正確的輸出。節點js mysql查詢在執行第二次時給出錯誤

events.js:141 throw er; // Unhandled 'error' event ^

Error: Cannot enqueue Handshake after invoking 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); 

有人能告訴我什麼我做錯了,但是當我打的API網址第二次,應用程序與錯誤崩潰?

+0

考慮使用池而不是單個連接。當你想要一個連接時使用pool.getConnection(),當你完成它的使用connection.release(); – Dave

回答

0

嘗試this刪除還原劑連接。這是谷歌搜索錯誤消息的第一個結果 - 在問這個問題之前總是嘗試google錯誤消息。

3

只需刪除connection.connect()connection.end()。那麼它應該工作。

connection.connect()應被調用一次或不調用。因爲connection.query將連接我不會連接。當連接丟失時,需要調用PS - connection.connect()