Node.js – 模块是否只初始化一次?

我正在使用node-mysql驱动程序的node.js应用程序。 我不需要反复为每个模型模块设置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,以便当我需要从模型,每次一个新的数据库连接将build立? 我知道这跟使用new东西有关,但是我无法把头围绕在里面。

 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来定义具有自定义getter逻辑的exports ,所以你可以做var db = require("./DB")