我想导出变量db
,以便在app.js
app.js
'use strict';
var config = require('./config');
console.log(config);
var database = require('./services/database')(config);
database.connect(...) // database is undefined
例外:TypeError:无法调用未定义的方法'connect'
config.js
var config = module.exports;
config.mongodb = {
port: process.env.MONGODB_PORT || 27017,
host: process.env.MONGODB_HOST || 'localhost',
db: "test"
};
服务/ database.js
module.exports = function(config) {
var mongoskin = require('mongoskin');
console.log(config);
var dburl = config.mongodb.host + ":" + config.mongodb.port + "/" + config.mongodb.db + "?auto_reconnect";
console.log(dburl);
var db = mongoskin.db(dburl);
// I want to export db
}
答案 0 :(得分:1)
我会导出一个具有db属性的对象。 该对象也可能具有其他属性(函数/数据)。 此示例代码导出具有函数属性fun和数据属性db。
的对象module.exports = function(param) {
return {
fun : function() {
// whatever code is needed
},
db : {
// whatever data is needed
}
};
}
答案 1 :(得分:1)
节点缓存模块的值,因此它总是会返回相同的数据库实例。
<强>服务/ database.js 强>
module.exports = function(config) {
var mongoskin = require('mongoskin');
console.log(config);
var dburl = config.mongodb.host + ":" + config.mongodb.port + "/" + config.mongodb.db + "?auto_reconnect";
console.log(dburl);
var db = mongoskin.db(dburl);
return db;
};
此外,您不需要app.js中的database.connect,因为您已经在 services / database.js 中连接。