首页 > 解决方案 > 深度合并片段

问题描述

我正在使用 GraphQL API(我不拥有)来访问数据。我广泛使用片段,我不止一次遇到的一个问题是片段似乎没有深度合并。考虑以下查询:

fragment BasicInfo on Person {
    id
    name
    address {
        city
        country
    }
}

query ProfileCard($id: ID) {
    personById(id: $id) {
        ...BasicInfo
        id
        age
        address {
            streetName
            streetNumber
        }
    }
}

在这里,我们运行一个基本查询以从个人资料卡中获取一些信息,包括该人的年龄和他们的一些地址(街道名称和号码)。配置文件卡使用的另一个组件也需要一些可以在BasicInfo片段中找到的信息。这包括他们的名字以及他们的城市和国家。

运行此查询将返回一个包含以下字段的对象:idnameage和。address.streetNameaddress.streetNumber

address.city并且address.country都丢失了 - 查询似乎没有将片段深度合并,只是在浅层插入它。

是否可以强制我的片段深度合并? 这甚至是预期的行为吗?我是否必须与 API 所有者联系才能更正此问题?

我很难找到说明它应该是一种方式或另一种方式的文档。

标签: graphqlgraphql-fragments

解决方案


尝试改用别名。就像是

fragment BasicInfo on Person {
      id
      name
      cityCountryAddress: address {
          city
          country
      }
  }

推荐阅读