gjw80
gjw80

Reputation: 1078

Calling an exported function from within the same module

If you have a function like this in a module:

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
        }
    });
}

Can you call this from inside the same module it's being defined? I want to do something like this:

later on inside dbHandler.js

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

Upvotes: 0

Views: 84

Answers (2)

Jason
Jason

Reputation: 13766

There are any number of ways to accomplish this, with Pointy's being my preferred method in most circumstances, but several others depending on the situation may be appropriate.

One thing you will see often is something like this:

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

Technically, though I've never actually seen someone do this, you could use the exports object inside your module without issue:

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

Beyond that, it comes down to whether it matters whether you have a named function, like in Pointy's example, or if an anonymous function is ok or preferred.

Upvotes: 0

Pointy
Pointy

Reputation: 413682

Declare the function like a regular old function:

function connectSQL(sql, connStr, callback){

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

    // ...

and then:

exports.connectSQL = connectSQL;

Then the function will be available by the name "connectSQL".

Upvotes: 2

Related Questions