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")
。