2017-06-28 26 views
0

以下のコードで接続部分で機能するコールバック関数 "fn()"を取得するのに問題があります。エラー処理はクエリに対してうまくいきます。 。私は、無効なSQL文字列を指定しますが、接続が失敗した場合、.catch(ファンクション(FN、ERR)ラインが動作しない場合、私は、コールバックを持ってしようとしています:node.js接続エラー時のmssqlコールバック

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

あなたはいつも何かが接続(接続エラー)で発生するたびに、それはエラーを発し、接続上のエラーのために耳を傾けなければなりません。

だから、connにリスナーを追加する必要があります。 here

+0

おかげShivamは、試してみるだろうドキュメント上

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 }); } 

詳細などの
何か! – Alexs