Node.js/MySQL:在node.js的错误日志中打印实际查询 [英] Node.js/MySQL: Printing actual query in error log in node.js

查看:203
本文介绍了Node.js/MySQL:在node.js的错误日志中打印实际查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些Node.js代码,尝试通过以下方式更新数据库:

I have some Node.js code that tries to update a database in something like the following:

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

针对不同的"command"值重复运行以上操作,从而对数据库生成不同的查询.问题在于,当出现错误时,错误的查询将打印在console.log(command)中.这是因为将查询添加到队列的时间与实际执行查询的时间不同,因此每次这些时间的"command"值都不相同.有办法解决吗?

The above is run repeatedly for different values of "command", thus generating different queries to the database. The problem is that when there is an error, the wrong query gets printed in the console.log(command). This is because the time the query is added to the queue, and the time the query is actually executed are not the same, so the value of "command" at each of these times isn't the same. Is there a way around this?

注意:console.log(err)打印错误本身以及查询的一部分,但仅打印发生错误的行.我想打印整个查询.

Note: console.log(err) prints the error itself, and also part of the query, but it only prints the line where the error occurred. I want to print the whole query.

推荐答案

根据 docs ,您可以使用query.sql来获取实际执行的查询.

As per docs, You can use query.sql to get the actual executed query.

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

这篇关于Node.js/MySQL:在node.js的错误日志中打印实际查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆