【问题标题】:Nodejs - Difference between require('module') and require('module').db?Nodejs - require('module') 和 require('module').db 之间的区别?
【发布时间】:2014-12-26 20:43:42
【问题描述】:
//module.js
exports.doA = function(callback) {
   db.asyncConnect(/* connect options */, function(err, database) {
       if(err == null) {
           exports.db = database;
       }
   });
}

exports.db = null;

// test1.js
var mydb = require('module');
console.log(mydb);

// test2.js
var db = require('module').db;
console.log(db);

var mydb = require('module'); 与 var mydb = require('module').db; 有何不同?

更新:使用我观察到的代码和行为进行更新

// file: db.js
exports.init = function (start_server){
    MongoClient.connect(url, {
            db: {
                raw: true
            },
            server: {
                poolSize: 5
            }
        },
        function(err, database) {
            exports.db = database;
            if(err == null)
            start_server();
        }
    );
}

exports.db = null;

.

// file: test.js
var mongodb = require('./db.js');
var db = require('./db.js').db;

console.log("MongoDb " + mongodb.db);
console.log("DB " + db);

输出: MongoDb [对象对象] 数据库空

问。变量db 出来为空,但mongodb.db 有值? 即使我在变量中分配了mongodb.db 的值,该值也会为空。

【问题讨论】:

    标签: node.js


    【解决方案1】:
    var mydb = require('module');
    

    这将获取整个模块。

    var mydb = require('module').db;
    

    这将获取模块返回的对象的属性db

    后一部分的缺点是您不能再访问“父”对象,即。从.db 调用返回的任何内容都将是您得到的,仅此而已。

    快速示例:

    //some_module.js
    
    var SomeModule = {
        db: function () {
            console.log("hello");
        }
    };
    module.exports = SomeModule;
    
    //some_other_module.js
    var SomeModule = require('./some_module.js');
    console.log(SomeModule); // [Object object]
    
    var SomeDB = require('./some_module.js').db;
    console.log(SomeDB); // function () {}
    

    【讨论】:

      【解决方案2】:

      基本不一样

      var mydb = require('module');
      

      这意味着您导出的每个object 都将被调用/导入。 mydb.doAmydb.db 可用。

      var db = require('module').db;
      

      只有db 对象被调用/导入到您的代码中。与第一个示例不同,db it self 类似于第一个示例中的mydb.db

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-31
        • 2015-06-22
        • 2023-01-12
        • 2015-11-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多