2016-12-15 51 views
5

我有試圖以類似以下內容更新數據庫的一些Node.js的代碼錯誤日誌打印實際查詢:的Node.js/MySQL的:在node.js的

connection.query(command, function(err,rows) { 
     if (err){ 
      console.log(command); 
      console.log("ERROR"); 
      console.log(err); 
      return; 
     } 
     console.log("good"); 
    }); 

以上是重複運行鍼對「命令」的不同值,從而生成對數據庫的不同查詢。問題是,當出現錯誤時,會在console.log(command)中打印錯誤的查詢。這是因爲查詢添加到隊列的時間以及查詢實際執行的時間並不相同,因此每個時間的「command」值都不相同。有沒有解決的辦法?

注意:console.log(err)本身打印錯誤,也是查詢的一部分,但它只打印發生錯誤的行。我想打印整個查詢。

回答

12

根據docs,您可以使用query.sql來獲取實際執行的查詢。

var post = {id: 1, title: 'Hello MySQL'}; 
var query = connection.query('INSERT INTO posts SET ?', post, function(err, result) { 
    // Neat! 
}); 
console.log(query.sql); // INSERT INTO posts SET `id` = 1, `title` = 'Hello MySQL' 

在這種情況下,這將是

connection.query(command, function (err, rows) { 
    if (err) { 
     console.log('this.sql', this.sql); //command/query 
     console.log(command); 
     console.log("ERROR"); 
     console.log(err); 
     return; 
    } 
    console.log("good"); 
}); 
+0

並沒有爲我工作,我也沒有看到它在文檔中。 – Iiridayn

+0

爲我工作... – Marin