【发布时间】:2014-08-22 22:15:41
【问题描述】:
我正在构建一个更大的网络应用程序,其中的路线被分成单独的文件。 所有路由都需要连接到数据库,因此它们都需要 mongoskin,这是我用于 MongoDb 的模块。像这样:
var mongo = require('mongoskin');
但不久之后,我意识到只需要 mongoskin 不足以让路由能够与 db 对话。因为在我的主 app.js 文件中,我还做了额外的“配置”。
db = mongo.db('mongodb://localhost/dbName', {native_parser:true});
db.open(function(err) {
if (!err) {
console.log('Connected to mongodb://localhost/dbName');
}
});
db.bind('clients');
db.bind('invoices');
我还需要共享这个 db 对象...
我的第一次尝试是将路由文件包装在一个带参数的导出函数中。当我在我的主 app.js 中需要 routes.js 时,会传入这个参数。这很好,但我并不是很喜欢这个解决方案......我认为它变得有点混乱。
我现在使用的第二种方法是为整个 db 对象创建一个单独的模块。
var mongo = require('mongoskin');
var db = null;
module.exports = {
initAndGetDb: function () {
db = mongo.db('mongodb://localhost/dbName', {native_parser:true});
db.open(function(err) {
if (!err) {
console.log('Connected to mongodb://localhost/dbName');
}
});
db.bind('clients');
db.bind('invoices');
return(db);
},
getDb: function () {
return(db);
}
};
在我的主 app.js 中
var db = require('./db').initAndGetDb();
在我的 routes.js 中
var db = require('../db').getDb();
问题:这种方法是否是共享数据库连接(以及其他类似方式)的有效解决方案?如果您对此有任何问题,请告诉我...
【问题讨论】:
标签: javascript node.js express