2016-12-15 13 views
5

Tôi có một số mã Node.js mà cố gắng để cập nhật cơ sở dữ liệu trong một cái gì đó như sau:Node.js/MySQL: In truy vấn thực tế trong nhật ký lỗi trong Node.js

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

Ở trên là chạy liên tục cho các giá trị khác nhau của "lệnh", do đó tạo ra các truy vấn khác nhau cho cơ sở dữ liệu. Vấn đề là khi có lỗi, truy vấn sai sẽ được in trong console.log (lệnh). Điều này là do thời gian truy vấn được thêm vào hàng đợi và thời gian truy vấn được thực thi không giống nhau, do đó giá trị của "lệnh" tại mỗi lần này không giống nhau. Có cách nào để giái quyết vấn đề này không?

Lưu ý: console.log (err) tự in ra lỗi và cũng là một phần của truy vấn, nhưng nó chỉ in dòng nơi xảy ra lỗi. Tôi muốn in toàn bộ truy vấn.

Trả lời

12

Theo docs, Bạn có thể sử dụng query.sql để nhận truy vấn được thực thi thực tế.

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' 

Trong trường hợp này, nó sẽ được

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

Không làm việc cho tôi, cũng không phải tôi nhìn thấy nó trong các tài liệu. – Iiridayn

+0

Làm việc cho tôi ... – Marin

Các vấn đề liên quan