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

Node.js遍历MySQL查询结果 数组push时console.log多次打印问题

问题原因

  • 打印语句位置错误:console.log(returnedIds)写在forEach循环内部,每往数组添加一个元素就会打印一次当前的数组状态,查询返回2条记录时就会输出2次数组,第一次是仅添加了第一个元素的状态,第二次是添加完所有元素的完整状态,属于执行逻辑符合预期的正常表现,不是功能bug。
  • 冗余遍历操作:connection.query返回的result本身就是查询结果组成的数组,不需要调用Object.keys()转换后再遍历。

修正代码

let query = "SELECT public_id FROM video_records WHERE frequency = 3"
connection.query(query, (error, result)=>{
    // 优先处理错误逻辑
    if(error) {
        console.error('查询执行失败:', error)
        return
    }
    let returnedIds = []
    result.forEach(item=>{
        returnedIds.push(item.public_id)
    })
    // 循环结束后再打印完整数组
    console.log(returnedIds)
})

优化方案

可以直接用数组map方法简化取值逻辑,代码更简洁:

let query = "SELECT public_id FROM video_records WHERE frequency = 3"
connection.query(query, (error, result)=>{
    if(error) {
        console.error('查询执行失败:', error)
        return
    }
    const returnedIds = result.map(item => item.public_id)
    console.log(returnedIds)
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:42:02