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

如何让GraphQL返回以ID为键的对象而非数组?

如何让GraphQL返回以ID为键的对象格式?

完全可行,分两种场景处理:

1. 你能控制GraphQL服务端API

直接修改查询对应的Resolver逻辑,同时调整Schema的返回类型:

  • 修改Resolver:将查询得到的数组转换为以ID为键的对象。以JavaScript为例:
async function getLicenses() {
  // 从数据源获取数组格式的数据
  const rawData = await fetchLicensesFromDB();
  // 转换为目标格式
  return rawData.reduce((result, item) => {
    result[item.id] = { license: item.license };
    return result;
  }, {});
}
  • 调整Schema:由于GraphQL是强类型系统,动态键的对象无法用常规对象类型定义,建议使用JSON标量类型(多数GraphQL库如Apollo Server、GraphQL.js都支持,或可自定义)。Schema示例:
scalar JSON

type Query {
  licenses: JSON!
}

2. 无法修改服务端API

在客户端拿到返回的数组后,自行转换格式。以JavaScript为例:

// 假设GraphQL返回的数组数据为licensesArray
const licensesArray = [
  { id: 19234, license: "value1" },
  { id: 25479, license: "value2" }
];

// 转换为目标对象格式
const licensesMap = licensesArray.reduce((acc, item) => {
  acc[item.id] = { license: item.license };
  return acc;
}, {});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:13:01