Javascript Node.js MSSQL返回一个值

Javascript Node.js MSSQL返回一个值,javascript,php,node.js,web,Javascript,Php,Node.js,Web,我有这个密码 var sql = require('mssql'); 我希望函数dbConnect返回一个值。但是当我使用console.log(dbConnect())调用它时我得到了 未定义 有什么帮助吗?函数本身没有返回语句,因此不会返回值,这是意料之中的 假设您想与调用方通信连接是否成功,您必须记住连接到数据库的过程是异步的,因此必须使用回调(或者我猜是承诺)来完成 如果将函数更改为以下内容: function dbConnect(cb){ sql.connec

我有这个密码

var sql = require('mssql');

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

未定义

有什么帮助吗?

函数本身没有返回语句,因此不会返回值,这是意料之中的

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

如果将函数更改为以下内容:

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!');
});
你可以这样称呼它:

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结构,但我相信节点编程风格更倾向于回调函数。但是,无法使dbConnect函数直接返回连接状态,因为该函数完成后,该值还不可用。

对不起,我想问一下我的附带问题,我只是好奇您的代码段中的
cb&&cb(true)
。除了单独调用
cb()
,它还能做什么呢?如果没有提供cb,它可以防止应用程序崩溃,例如,只需在没有参数的情况下调用dbConnect()。当然,最好检查它是否是一个函数,但这个示例会变得有点冗长:)