node.js连接错误

时间:2017-06-28 16:36:17

标签: node.js

我无法获得回调函数" 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');




1 个答案:

答案 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

的更多信息