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

