2017-12-16 8 views
0

Node.jsにmysqlモジュールを使用しています。私のモデルファイルでは、現在、各メソッドで接続定数を指定しています。しかし、これは多くのスペースを占めており、理想的ではないことが分かっています。Node.jsでコードの繰り返しを避けるためにMySQL接続を置く場所

これは、次のようなものです。

doSomething:() => { 

    var connection = mysql.createConnection({ 
     host  : config.database.host, 
     database : config.database.database, 
     user  : config.database.user, 
     password : config.database.password 
    }); 

    connection.query(...); 
    connection.destroy(); 

}, 



doSomethingElse:() => { 

    var connection = mysql.createConnection({ 
     host  : config.database.host, 
     database : config.database.database, 
     user  : config.database.user, 
     password : config.database.password 
    }); 

    connection.query(...); 
    connection.destroy(); 


}, 

誰もがちょっとしたものを整理してここの冗長コードを減らす方法をお勧めしますか?

答えて

0

接続を1回作成し、モジュールの書き出しに渡します。

const mysql = require("mysql"); 

const conn = mysql.createConnection({ 
    host: "localhost", 
    user: "root", 
    password: "", 
    database: "db" 
}); 

module.exports = conn; 

他のファイルにインポートして使用することができます。

var dbConnection = require('./dbConnection'); 

dbConnection.query(); 

しかし、代わりにcreateConnectionを使用しての、私の代わりにcreatePoolを使用することをお勧めします。

1つの接続の共有を容易にするために接続をプールするか、複数の接続を管理する を接続できます。あなたはこのようにそれを使用することができます

const mysql = require("mysql"); 

const conn = mysql.createPool({ 
    host: "localhost", 
    user: "root", 
    password: "", 
    database: "db" 
}); 

module.exports = conn; 

。テーブルからデータをフェッチした後、接続をreleaseていることを確認してください:

var connectionPool = require('./dbConnection'); 

connectionPool.getConnection((err, connection) => { 
    connection.query('SELECT * FROM table', (error, result) { 
    connection.release(); 
    if(error) throw error; 
    }); 
}); 

プール内のすべての接続を閉じるには:

connectionPool.end(function (err) { 
    // all connections in the pool have ended 
}); 
+0

ありがとうございます!そしてどこで接続を終了しますか? – Joel

+0

@Joel私の編集を参照してください –

関連する問題