为什么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
相关产品推荐
相关产品推荐

