You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过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

火山引擎 最新活动