从同一模块中调用导出的函数

时间:2014-01-09 15:41:10

标签: javascript node.js

如果你在模块中有这样的功能:

dbHandler.js

exports.connectSQL = function(sql, connStr, callback){

    ////store a connection to MS SQL Server-----------------------------------------------------------------------------------
    sql.open(connStr, function(err, sqlconn){
        if(err){
            console.error("Could not connect to sql: ", err);
            callback(false);         //sendback connection failure
        }
        else{
            callback(sqlconn);       //sendback connection object
        }
    });
}

你可以从它定义的同一个模块中调用它吗?我想做这样的事情:

later on inside dbHandler.js

connectSQL(sql, connStr, callback){
   //do stuff
});

2 个答案:

答案 0 :(得分:2)

将函数声明为常规旧函数:

function connectSQL(sql, connStr, callback){

    ////store a connection to MS SQL Server------------------------------------
    sql.open(connStr, function(err, sqlconn){

    // ...

然后:

exports.connectSQL = connectSQL;

然后该功能将以“connectSQL”的名称提供。

答案 1 :(得分:0)

有很多方法可以实现这一点,Pointy在大多数情况下都是我首选的方法,但其他几种方法可能是合适的。

你经常会看到的一件事是这样的:

var connectSQL = exports.connectSQL = function(sql, connStr, callback) { /*...*/ };

从技术上讲,虽然我从未真正看到有人这样做过,但您可以使用模块中的exports对象而不会出现问题:

// later on inside your module...
exports.connectSQL('sql', 'connStr', function() {});

除此之外,它归结为你是否有一个命名函数,如Pointy的例子,或匿名函数是否正常或首选。