2014-01-09 45 views
0

內的導出函數如果你有這樣的功能模塊中:調用來自同一模塊

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

聲明功能就像一個普通的舊功能:

function connectSQL(sql, connStr, callback){ 

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

    // ... 

然後:

exports.connectSQL = connectSQL; 

然後,該功能將提供由名「connectSQL」。

0

有很多種方法可以實現這一點,在大多數情況下,Pointy是我的首選方法,但根據情況可能需要其他方法。

有一件事你會經常看到的是這樣的:

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

從技術上講,雖然我從來沒有真正見過有人這樣做,你可以使用你的出口模塊內部對象沒有問題:

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

除此之外,它還取決於您是否具有命名函數,比如在Pointy的示例中,或者匿名函數是否可用。