Node.js:如何加载模块而不执行它们?

时间:2014-02-04 16:11:43

标签: javascript node.js mongodb

我有一个简单的文件model.js,如下所示:

var mongo = require('mongodb');

var mongoUri = process.env.MONGOLAB_URI ||
    process.env.MONGOHQ_URL ||
    'mongodb://localhost/mydb';

exports.connect = mongo.Db.connect(mongoUri, function(err, db) {
    console.log("Connect to the database successfully")
});

在我的web.js我使用model = require('./model.js')加载模型。一个令人担忧的事情是,虽然我没有调用model.connect(),但消息“成功连接到数据库”仍然记录到我的控制台。为什么会发生这种情况并且有办法避免它?

编辑:没关系,我找到了一个解决方法:

exports.connect = function(){
     mongo.Db.connect(mongoUri, function(err, db) {
        console.log("Connect to the database successfully")
     });
}

1 个答案:

答案 0 :(得分:3)

exports.connect = mongo.Db.connect(mongoUri, function(err, db) {
    console.log("Connect to the database successfully")
});

您刚刚致电mongo.Db.connect()并将其结果分配给exports.connect
只要您require()模块,该代码即会运行。

相反,您需要创建一个函数:

exports.connect = function() { ... };