2016-12-30 7 views
0

ExpressでノードにREST APIを作成しようとしています。ブラウザで初めてURLを開くと、うまく動作して正しい出力が得られます。ノードjs mysqlクエリで2回目の実行時にエラーが発生する

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); 

は、誰かが私に言うことができる私が間違って何をやっている:これは私が使用しているコードがある

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

Error: Cannot enqueue Handshake after invoking quit.

:私は二度目のAPIのURLを打ったときしかし、アプリがエラーでクラッシュ?

+0

単一の接続の代わりにプールを使用することを検討してください。接続をしたいときはpool.getConnection()を使い、終了したらconnection.release()を使います。 – Dave

答えて

0

還元剤の接続を取り除くためにthisを試してください。これは、エラーメッセージのGoogle検索の最初の結果でした - 常に、Googleに問い合わせる前にエラーメッセージを表示してください。

3

connection.connect()connection.end()を削除してください。そうすればうまくいくはずです。

connection.connect()は、一度だけ、または一度も呼び出されません。 connection.queryが接続されるため、私は接続しませんでした。

PS - connection.connect()は、接続が失われたときに呼び出す必要があります。

関連する問題