Node.js MSSQL返回一个值

时间:2016-10-19 06:15:52

标签: javascript php node.js web

我有这段代码

var sql = require('mssql');

...

function dbConnect(){       
sql.connect(config).then(function() {       
    return true;
}).catch(function(err) {
    return false;
}); 

我希望函数 dbConnect 返回一个值。但是当我使用console.log(dbConnect());调用它时,我得到了

  

未定义

任何帮助?

1 个答案:

答案 0 :(得分:1)

dbConnect()函数没有自身的return语句,因此不会返回值,这是预期的。

假设您想要回调给调用者是否连接成功,您必须记住连接到数据库的过程是异步的,因此必须使用回调(或我承诺)来完成。

如果您将功能更改为以下内容:

function dbConnect(cb){       
    sql.connect(config).then(function() {       
        cb && cb(true);
    }).catch(function(err) {
        cb && cb(true);
}); 

然后你可以这样称呼它:

dbConnect(function(result) {
    if (result) console.log('yay! connected');
    else console.log('ohnoz! connection failed!');
});

作为替代方案,您可以使用promise结构,但我相信Node编程风格更倾向于回调函数。但是,无法使dbConnect函数直接返回连接的状态,因为该函数完成后该值尚不可用。