Node.js:如何加载模块而不执行它们?
我有一个简单的文件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()
,消息“连接到数据库成功”仍然logging到我的控制台。 为什么会发生这种情况,有没有办法避免呢?
编辑 :没关系,我find了一个解决方法:
exports.connect = function(){ mongo.Db.connect(mongoUri, function(err, db) { console.log("Connect to the database successfully") }); }
exports.connect = mongo.Db.connect(mongoUri, function(err, db) { console.log("Connect to the database successfully") });
您只需调用mongo.Db.connect()
并将其结果分配给mongo.Db.connect()
。
该代码尽快运行require()
模块。
相反,你需要创build一个函数:
exports.connect = function() { ... };