如果你在模块中有这样的功能:
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
});
答案 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的例子,或匿名函数是否正常或首选。