2012-09-14 24 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