繁体   English   中英

Node.js导出问题

[英]Node.js Export Troubles

我对NodeJS导出模块的方式感到好奇。 我知道要导出一个方法,我们编写了exports keyword.methodname。

但是,我的模块是一个连接:

//Require mysql connector that you installed with npm
var mysql      = require('mysql');

var conn_conf = {
    host     : 'localhost',
    port     : 3306,
    user     : 'root',
    password : 'root',
    database : 'nutrition_tracker'
}

var connection = mysql.createConnection(conn_conf);

connection.connect(function(err) {
    if(err) console.log("Could not connect to DB");
    else{
        console.log("Connected to "+conn_conf.database+' on '+conn_conf.host );

    }
});

然后在需要它的文件中:

var db2 = require('../db/mysql_conn');

console.log(db2)

但是每次db2都是{}。 我不明白为什么-我不应该要求模块给我连接吗? 我什至尝试返回模块内的连接,但是同一件事-db2是{}。

在模块文件的末尾添加以下行:

exports = module.exports = connection;

请注意,您的方法存在缺陷,因为您不知道require()调用返回的连接状态是什么。 您可能在打开连接之前发送查询。

更好的方法是改为导出工厂函数:

exports = module.exports = function(cb) {
   // your code as above
   // ...

   connection.connect(function(err) {
     if(err) {
       console.log("Could not connect to DB");
       cb(err);
     } else {
       console.log("Connected to "+conn_conf.database+' on '+conn_conf.host );
       cb(null, connection);
     }
   });
};

并以这种方式使用它:

var createDb = require('../db/mysql_conn');
createDb(function(err, db2) {
   console.log(db2);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM