2012-11-12 72 views
1

在以下代碼中,session.js和user.js中的「db」變量引用了db.js中的同一對象,還是它們的副本(與我的數據庫服務器建立了單獨的連接)?是否module.require(...)。*返回module.exports。*的一個副本或它的引用?

// 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; 
...... 

謝謝!

回答

1

每次撥打require('../db.js')時都會返回相同的對象,因此在您的情況下只會創建一個database連接池。

請注意database實際上是一個連接池(默認爲5),可以在代碼中自由共享,所以這可能是您想要的。

查看文檔here

+0

很酷,謝謝你教我新東西! – SChang

2

需要的模塊被緩存,所以它們都會指向同一個對象。相關的Node.js文檔:Modules caching docs

相關問題