2014-01-09 4 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() {}); 

Помимо этого, все зависит от того, имеет ли значение именованная функция, например, в примере Уоуни, или если анонимная функция одобрена или предпочтительна.

Смежные вопросы