一尘不染

Node.js / MySQL:在node.js的错误日志中打印实际查询

node.js

我有一些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)打印错误本身以及查询的一部分,但仅打印发生错误的行。我想打印整个查询。


阅读 321

收藏
2020-07-07

共1个答案

一尘不染

根据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");
});
2020-07-07