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.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")()

每次调用数据库时都初始化一个新客户端。

您可以使用自定义 getter 逻辑Object.defineProperty进行定义exports,以便您可以var db = require("./DB")根据需要进行操作。

于 2011-05-10T17:58:54.930 回答