module.require(...)。*是否返回module.exports。*的副本或它的引用?

时间:2012-11-12 15:02:25

标签: javascript node.js mongodb node-modules

在下面的代码中,session.js和user.js中的“db”变量是引用db.js中的同一对象的,还是它们的副本(与我的数据库服务器建立单独的连接)?

// db.js
var mongojs = require('mongojs');
var db = mongojs('test', ['users', 'sessions']);
module.exports.database = db;

// session.js
var db = require('../db.js').database;
......

// user.js
var db = require('../db.js').database;
......

谢谢!

2 个答案:

答案 0 :(得分:2)

高速缓存必需的模块,因此它们都指向同一个对象。相关的Node.js文档:Modules caching docs

答案 1 :(得分:1)

每次调用require('../db.js')都会返回相同的对象,因此在您的情况下,只会创建一个database连接池。

请注意,database实际上是一个连接池(默认为5个),可以在您的代码中自由共享,因此这很可能是您想要的。

请参阅文档here