6

node.jsアプリにnode-mysqlドライバーを使用しています。モデルのようなモジュールごとにmysql接続を何度も設定する代わりに、次のようにします。

// DB.js
var Client = require('mysql').Client;
var DB_NAME = 'test_db';
var client = new Client();
client.user = 'user';
client.password = 'pass';
client.connect();
client.query('USE '+DB_NAME);
module.exports = client;

// in User.js
var db = require("./DB");
// and make calls like:
db.query(query, callback);

ここで、DB.jsがDB接続で一度だけ初期化されることに気付きました。したがって、その後、同じclientオブジェクトが使用されます...モデルから必要なときに、新しいDB接続がセットアップされるたびにDB.jsを構成するにはどうすればよいですか?を使用することと関係があることは知っていますがnew、頭を包むことができません。

4

1 に答える 1

9
module.exports = function() {
    var client = new Client();
    client.user = 'user';
    client.password = 'pass';
    client.connect();
    client.query('USE '+DB_NAME);
    return client;
}

var db = require("./DB")()

データベースを呼び出すたびに、新しいクライアントを初期化します。

必要に応じて実行できるように、カスタムゲッターロジックでObject.defineProperty定義するために使用できます。exportsvar db = require("./DB")

于 2011-05-10T17:58:54.930 に答える