如何使用GraphQL别名去除冗余数据,优化响应字段结构
让GraphQL直接返回字段值而非嵌套对象
你当前的查询把department对象别名成了department_id,所以返回结果里department_id是包含DEPARTMENT_CODE的嵌套结构。要实现期望的扁平结果,有几种可行方式:
1. 调整查询语句(Schema支持的前提下)
如果你的GraphQL Schema里,investment_manager_report类型能直接访问DEPARTMENT_CODE字段(不需要通过department对象嵌套),直接对该字段取别名即可:
query data { investment_manager_report { department_id: DEPARTMENT_CODE } }
要是DEPARTMENT_CODE必须通过department对象获取,这种方式就用不了。
2. 客户端处理返回数据
没法改查询或Schema的话,拿到响应后手动转换结构就行。比如用JavaScript处理:
const transformedResult = { data: { investment_manager_report: response.data.investment_manager_report.map(item => ({ department_id: item.department_id.DEPARTMENT_CODE })) } };
3. 修改服务器端Resolver(有权限的话)
如果能改动GraphQL服务器的配置,在investment_manager_report类型里新增department_id字段,让它的Resolver直接返回department.DEPARTMENT_CODE的值。之后就能用简单查询拿到结果:
query data { investment_manager_report { department_id } }
内容的提问来源于stack exchange,提问作者Ry2254
相关产品推荐
相关产品推荐

