javascript - 如何调试通过 mysql2 发送的查询?

标签 javascript mysql node.js mysqljs

来自mysql2我们阅读的自述文件:

MySQL2 is mostly API compatible with mysqljs

哪个包有一个选项定义为:

  • debug: Prints protocol details to stdout. Can be true/false or an array of packet type names that should be printed. (Default: false)

这个选项甚至有一个例子:

var connection = mysql.createConnection({debug: ['ComQueryPacket', 'RowDataPacket']});

但是,使用 true"ComQueryPacket" 和/或 "RowDataPacket" 设置此选项会释放大量不相关的数据;我所关心的只是发送 SQL 查询和变量。如何使用这个包来完成此操作?

最佳答案

debug 选项仅支持 mysql2 中的 true/false 值。记录所有查询的最简单方法是猴子补丁 Connection.prototype.addCommand,示例伪代码:

let addCommand = Connection.prototype.addCommand
function loggingAddCommand(cmd) {
  if (cmd.constructor === Commands.Query) {
    console.log(`Adding query command, sql: ${cmd.sql}`);
  }
  this.addCommand(cmd);
}

connection.addCommand = loggingAddCommand;

我会尝试考虑更好的 api 来使这更容易。也许连接上有“命令”事件?如果我们添加这个,上面的例子将变成 conn.on('command_add', cmd => {/* ... */})

关于javascript - 如何调试通过 mysql2 发送的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64340799/

相关文章:

node.js - 如何在不重启服务器的情况下向Nodejs添加路由?

javascript - jQuery:正确循环对象?

Javascript:创建窗口的假副本以通过引用传递函数

javascript - 在 div 上时绑定(bind)到滚轮

php - 重定向到 div 元素 php

php - 如何在 Laravel 5.2 中创建表关系

PHP MySQL连接两个表

javascript - 如何在 javascript selenium 中检查复选框并获取复选框是否被选中

node.js - 在启用了 Clean-Css 的情况下为 Windows 运行 Less.js 时出现 "object has no method ' 安装错误

javascript - Mootools ajax 调用删除包含空数组的数据