3

我正在开发一个提供 REST api 的快速应用程序,它通过 mongoskin 使用 mongodb。我想要一个将路由与数据库访问分开的层。我看过一个通过创建模块文件来创建数据库桥的示例,例如 models/profiles.js:

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
}

稍后在路由文件中需要此模块。

我的问题是:如果我使用这种方法为每个集合创建一个模块,它会有效吗?通过这样做,我是否有从 mongo 连接和断开多个(不必要的)时间的问题?

我想也许将 db 变量从一个模块导出到处理每个集合的其他模块可以解决假定的问题,但我不确定。

4

1 回答 1

0

使用单个连接,然后创建传递共享数据库实例的模块。您希望避免为每个模块设置单独的数据库池。这样做的一个是将模块构造为一个类。

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

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

MyClass.doQuery = function() {
}
于 2012-09-23T15:17:45.503 回答