使用module.exports导出变量的语法

时间:2014-01-04 16:17:56

标签: node.js

我想导出变量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
}

2 个答案:

答案 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 中连接。