You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Node.js中使用mysql2执行SQL查询会返回ColumnDefinition对象?

为什么mysql2查询返回结果附带ColumnDefinition内容?

mysql2 中 pool.query() 方法的异步返回值默认是二元数组结构,两个元素分别为:

  • 第一个元素:SQL 查询匹配到的实际业务行数据,也就是你需要的{ foo, foo1 }这类结果
  • 第二个元素:ColumnDefinition 类型的字段元数据,包含查询涉及的列的字段类型、编码、所属库表等描述信息,你看到的带Buffer的内容就是这部分元数据

你当前的代码直接将整个返回的二元数组赋值给了tests变量,所以接口返回的时候会把元数据部分也一起序列化输出。

修复方案

只需要在接收返回值的时候解构取第一个元素即可,修改代码中的查询行:

// 仅取第一个元素的行数据,忽略第二位的元数据
const [tests] = await pool.query(stmt);

如果你有获取字段元信息的需求,也可以单独声明变量接收第二位的返回值:

const [tests, columnMetadata] = await pool.query(stmt);
// columnMetadata 中就包含所有ColumnDefinition相关的字段描述内容

内容的提问来源于stack exchange,提问作者wil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:57:01