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

如何让mysql2的execute/query返回数组而非mysql.QueryResult

解决方案

先修复SQL注入风险

你的当前代码存在严重的SQL注入漏洞,直接把ids拼接进SQL语句的做法非常危险。应该改用参数化查询,mysql2会自动处理数组类型的参数:

const [results] = await connection.execute(
  `SELECT * FROM providers WHERE id IN (?)`,
  [ids]
);

高效转换QueryResult为纯JS数组

mysql2的QueryResult是继承自Array的对象,本身已经包含了查询到的行数据,只是额外附带了fields、affectedRows等元数据属性。如果需要去掉这些额外属性得到纯数组,用以下任意一种高效方法即可,性能远优于JSON.parse(JSON.stringify()):

  • 使用展开运算符:
const plainResults = [...results];
  • 使用Array.from:
const plainResults = Array.from(results);
  • 使用数组的slice方法:
const plainResults = results.slice();

默认情况下查询返回的行已经是普通JS对象,不需要额外转换;如果你配置了rowsAsArray: true,行数据会是数组格式,可根据需求调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 00:42:08