我无法获得回调函数" fn()"在下面的代码中处理连接部分。错误处理适用于查询,例如如果我指定了一个无效的SQL字符串,但是如果连接失败,则.catch(函数(fn,err)行不起作用。我正在尝试进行回调:
getEmp(function(result, err) {
if (err) return console.log('Error X: ' + ' - ' + err);
console.log("completed: " + result.recordset[0].Operation + ' - ' + result.recordset[0].Location);
}, 'Weeke');

返回记录以及查询和数据库连接错误。它返回记录和查询错误,但不适用于连接错误。我是Node的新手,回调对我来说有点混乱。 任何帮助是极大的赞赏。 谢谢 亚历克斯
var sql = require("mssql");
var config = {
server: "192.168.1.153\\sqlexpress",
database: "testdb",
user: "testdb",
password: "markus",
port: "1433"
};
function getEmp(fn, tblname) {
var conn = new sql.ConnectionPool(config);
conn.connect().then(function() {
var req = new sql.Request(conn);
req.query("SELECT * FROM " + tblname).then(function(result, err) {
console.log('Var: ' + tblname);
conn.close();
fn(result, err);
})
.catch(function(err) {
console.log("Query Error: " + err);
conn.close();
fn(null, err);
});
})
.catch(function(fn, err) {
console.log("Connection Error: " + err);
fn(null, err);
});
}
getEmp(function(result, err) {
if (err) return console.log('Error X: ' + ' - ' + err);
console.log("completed: " + result.recordset[0].Operation + ' - ' + result.recordset[0].Location);
}, 'Weeke');

答案 0 :(得分:0)
您应该始终监听连接上的错误。每当连接发生某种情况时(连接错误),它都会发出错误。
所以你应该为conn
添加一个听众
像
function getEmp(fn, tblname) {
var conn = new sql.ConnectionPool(config);
conn.connect()
.then(function() {
var req = new sql.Request(conn);
req.query("SELECT * FROM " + tblname).then(function(result, err) {
console.log('Var: ' + tblname);
conn.close();
fn(result, err);
})
.catch(function(err) {
console.log("Query Error: " + err);
conn.close();
fn(null, err);
});
})
.catch(function(fn, err) {
console.log("Connection Error: " + err);
fn(null, err);
});
conn.on('error', err => {
// ... error handler
});
}
有关文档here
的更多信息