我有这段代码
var sql = require('mssql');
...
function dbConnect(){
sql.connect(config).then(function() {
return true;
}).catch(function(err) {
return false;
});
我希望函数 dbConnect 返回一个值。但是当我使用console.log(dbConnect());
调用它时,我得到了
未定义
任何帮助?
答案 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函数直接返回连接的状态,因为该函数完成后该值尚不可用。