节点.js - 是仅初始化一次的模块
Node.js - are modules initialised only once?
我正在为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
对象...如何构建数据库.js以便当我从模型中需要它时,每次设置新的数据库连接时?我知道这与使用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")
。
相关文章:
- Javascript返回值只在循环中返回一次
- Jquery FadeIn FadeOut 只工作一次
- Javascript html每点击一次就会更改url
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- jQuery滚动功能只工作一次
- 刷新导致我的帖子“;张贴“;再一次
- 引导程序崩溃一次只能看到一个
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- 加载器组件仅加载一次
- 根据Angular.JS上一次的内容禁用选择
- 一次又一次地在新的和相同的选项卡中打开一个url
- 我应该在每个文件中都需要一个模块还是需要它一次并将其作为参数传递
- 浏览器化只执行一次模块代码,在多个需要调用上
- 在requirejs中只声明一次时,模块共享相同的url
- 在一次使用后删除Javascript模块中的公共方法
- Dojo AMD加载器是否确保模块只执行一次?
- 如何使RequireJS应用模块化,即下载文件在去,而不是一次
- 在左侧栏菜单中,一次只能打开一个模块
- 节点.js - 是仅初始化一次的模块