2012-09-14 26 views
3

我正在開發一個快速應用程序,它提供了一個REST API,它通過mongoskin使用了mongodb。我想要一個從db acess分離路由的層。我已經看到,通過創建模塊文件,一個例子模型/ profiles.js創建一個數據庫橋的例子:通過多模塊方式訪問mongodb/mongoskin的效率?

var mongo = require('mongoskin'), 
db = mongo.db('localhost:27017/profiler'), 
profs = db.collection('profiles'); 

exports.examplefunction = function (info, cb) { 
    //code that acess the profs collection and do the query 
} 

本模塊後面的路由文件是必需的。

我的問題是:如果我使用這個aproach爲每個集合創建一個模塊,它會有效嗎?我是否有這樣做的問題,從mongo連接和斷開多個(不必要的)時間?

我在想,也許將數據庫變量從一個模塊導出到處理每個集合的其他模塊將解決已解決的問題,但我不確定。

回答

0

使用單個連接,然後創建傳遞到共享數據庫實例中的模塊。您希望避免爲每個模塊設置單獨的數據庫池。這樣做之一是將模塊構建爲一個類。

exports.build = function(db) { 
return new MyClass(db); 
} 

var MyClass = function(db) { 
    this.db = db; 
} 

MyClass.doQuery = function() { 
} 
+0

我這樣做:在一個文件中,我把var mongo = require('mongoskin'); exports.db = mongo.db('localhost:27017/profiler'); – ojon

+0

在其他模塊中:var db = require('../ ds/config.js')。db; – ojon

+0

config.js是第一個文件,它具有相同的效果嗎?我不知道節點如何在多個文件中處理相同的需求。 – ojon