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

在GraphQL字段解析器中如何获取同对象的同级Zip字段值?

GraphQL 解析器获取父级字段值方案

实现方法

解析器的第一个参数 parent 就是当前字段所属的父类型实例,此处 CityState 属于 CityInfo 类型,因此 parent 就是上层解析器返回的 CityInfo 对象,直接从该对象中读取 Zip 属性传入接口即可。
修正后的解析器代码如下:

const resolvers = {
  Query: {
    CitiesStatesZips: (parent, args, {dataSources}) => dataSources.ZipApi.getZipCodes()
  },
  CityInfo: {
    CityState: (parent, args, { dataSources }) => 
      // 从父级CityInfo实例中取Zip值传入接口
      dataSources.CityStateApi.getCityStateByZip(parent.Zip)
  }
}

注意事项

请确保 ZipApi.getZipCodes() 接口返回的列表中每个对象都包含和 typeDef 定义一致的 Zip 字段,如果接口返回的键名不匹配,你可以在 Query 解析器中先做字段映射,示例如下:

CitiesStatesZips: async (parent, args, {dataSources}) => {
  const zipList = await dataSources.ZipApi.getZipCodes()
  // 假设接口返回的邮编字段键名为zip_code,映射为typeDef需要的Zip
  return zipList.map(item => ({ Zip: item.zip_code }))
}

执行逻辑说明

  • 第一步先执行 Query 层的 CitiesStatesZips 解析器,拉取全量邮编列表,每个列表元素对应一个 CityInfo 实例
  • 当客户端请求需要返回 CityState 字段时,才会触发 CityInfo.CityState 解析器,此时传入的 parent 就是当前要解析的 CityInfo 实例,可直接读取到对应的 Zip 字段值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:27:05