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

如何在Apollo Federation中扩展嵌入式子对象且不覆盖原有字段?

解决方案

要在GraphQL联邦中扩展嵌入式对象且不覆盖原有字段、保留原服务的解析权,你可以按照以下方式编写Service B的Schema:

type A @key(fields: "id") {
  id: ID! @external
  # 重新声明embeddedMetaData字段,关联扩展的MetaData新字段
  embeddedMetaData: MetaData
}

# 仅定义需要新增的字段,原有字段由Service A负责维护与解析
type MetaData {
  fieldB: String
}

关键说明:

  • 联邦网关会自动合并两个服务中的MetaData类型,最终的MetaData会包含fieldA(由Service A解析)和fieldB(由Service B解析)。
  • 在Service B的解析器中,只需实现A.embeddedMetaData.fieldB的解析逻辑,基于A.id获取对应值即可,无需处理fieldA相关逻辑。
  • 这种方式不会覆盖Service A的任何字段,原服务对fieldA和embeddedMetaData的解析权完全保留,网关在处理查询时会分别向两个服务请求对应字段的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:45:40