如何通过async/await返回并展示多条查询结果集为JSON列表
解决async/await返回多条记录为JSON列表的问题
老哥,我猜你大概率是在处理数据库查询或者API请求时,不小心只取了结果集里的第一条记录,导致输出只有单个对象而不是JSON列表对吧?别慌,我给你梳理下常见场景的解决办法:
场景1:数据库查询(以Node.js mysql2为例)
很多新手会犯的错是拿到结果集后直接取rows[0],自然只返回第一条。正确的做法是直接返回整个结果数组,再转成JSON:
错误示例(只返回第一条)
async function getUsers() { const [rows] = await connection.query('SELECT * FROM users'); // 这里只取了第一条记录 return JSON.stringify(rows[0]); }
正确写法(返回完整JSON列表)
async function getUsers() { const [rows] = await connection.query('SELECT * FROM users'); // 返回整个结果数组,转成JSON字符串 return JSON.stringify(rows); } // 调用示例 async function main() { const userListJson = await getUsers(); console.log(userListJson); // 输出就是包含所有用户的JSON数组啦 } main();
如果用的是PostgreSQL的pg库,逻辑完全一致:await client.query(sql)返回的result.rows就是完整结果数组,直接用就行。
场景2:API接口请求(用fetch)
如果是从第三方API拿数据,同样要确保你拿到的是完整数组而非单个元素:
错误示例
async function fetchPosts() { const res = await fetch('https://api.example.com/posts'); const posts = await res.json(); // 只返回了第一篇文章 return JSON.stringify(posts[0]); }
正确写法
async function fetchPosts() { const res = await fetch('https://api.example.com/posts'); const posts = await res.json(); // 返回完整的文章数组 return JSON.stringify(posts); }
关键检查点
- 先确认你的查询语句/API返回的本身就是多条记录:比如SQL有没有误加
LIMIT 1,API接口是否确实返回数组 - 确保async函数里返回的是整个结果数组,而不是数组的单个元素
- 如果需要的是JSON字符串,用
JSON.stringify()把数组转成对应的格式;如果是给前端框架用,直接返回JS数组也可以
内容的提问来源于stack exchange,提问作者shahi




