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()。当然,最好检查它是否是一个函数,但这个示例会变得有点冗长:)