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

如何在Hasura中修改GraphQL查询响应,去除多余的id_object嵌套层级?

Hasura查询嵌套结构扁平化解决方案

你可以根据场景选择以下两种实现方案:

方案1:前端直接转换响应(无需改动后端,实现成本最低)

拿到原始返回结果后直接对数组做映射处理即可,JavaScript示例代码如下:

const rawResponse = {
  "data": {
   "ids": [
    {"id_object": {"id": 33102}},
    {"id_object": {"id": 33104}}
   ]
  }
}

const targetResponse = {
  data: {
    ids: rawResponse.data.ids.map(item => ({id: item.id_object.id}))
  }
}

得到的targetResponse就完全符合你需要的结构。

方案2:修改Hasura配置,查询直接返回目标结构(前端无需额外处理)

你可以给对应表添加计算字段,把嵌套的id直接暴露为平级字段:

  1. 打开Hasura控制台,进入Data页面找到你查询的源表,点击Modify标签
  2. 找到Computed Fields模块,点击添加计算字段
  3. 自定义字段名为id,关联对应的SQL函数,示例函数写法如下(替换为你实际的表名、关联字段名):
CREATE OR REPLACE FUNCTION public.get_associated_id(row public.your_source_table)
RETURNS integer AS $$
SELECT id FROM public.id_object WHERE id = row.id_object_id;
$$ LANGUAGE sql STABLE;
  1. 配置完成后,查询语句可以直接简化为:
query fetchIds {
  ids {
    id
  }
}

返回结果会直接匹配你要求的无嵌套结构。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 05:54:02