GraphQL错误字段冲突:字段具有不同的列表形状

GraphQL错误字段冲突:字段具有不同的列表形状,graphql,aws-appsync,Graphql,Aws Appsync,我将AWS AppSync的GraphQL服务器与以下(简化)模式一起使用: 当我在问题/数据字段中进行包括选择状态作为事件或付款类型的子项的查询时,我得到一个字段冲突错误: FieldsConflict类型的验证错误:状态:字段具有不同的列表形状@“getIssue/data” 这可能是由于事件/状态字段返回一个字符串数组,而付款/状态字段返回一个字符串造成的 为什么Copql认为这是一种冲突?我应该如何构造查询以允许访问这两种数据类型上的状态字段 请注意,我使用的是联合而不是扩展接口,因为发

我将AWS AppSync的GraphQL服务器与以下(简化)模式一起使用:

当我在
问题/数据
字段中进行包括选择
状态
作为
事件
付款
类型的子项的查询时,我得到一个字段冲突错误:

FieldsConflict类型的验证错误:状态:字段具有不同的列表形状@“getIssue/data”

这可能是由于
事件/状态
字段返回一个字符串数组,而
付款/状态
字段返回一个字符串造成的

为什么Copql认为这是一种冲突?我应该如何构造查询以允许访问这两种数据类型上的状态字段

请注意,我使用的是联合而不是扩展接口,因为
发行
支付
类型没有通用的数据结构。

来自:

如果在执行过程中遇到具有相同响应名称的多个字段选择,则要执行的字段和参数以及结果值应该是明确的。因此,对于同一对象,可能同时遇到的任何两个字段选择只有在它们相等时才有效

您可以通过为一个或两个字段提供字段别名来解决此问题:

query getIssue($id: String!) {
  getIssue(id: $id) {
    id
    data {
      ... on Event {
        time
        eventStatus: status
      }
      ... on Payment {
        amount
        status
      }
    }
  }
}
重命名模式中的一个或两个字段显然也可以解决此问题

query getIssue($id: String!) {
  getIssue(id: $id) {
    id
    data {
      ... on Event {
        time
        status
      }
      ... on Payment {
        amount
        status
      }
    }
  }
}
query getIssue($id: String!) {
  getIssue(id: $id) {
    id
    data {
      ... on Event {
        time
        eventStatus: status
      }
      ... on Payment {
        amount
        status
      }
    }
  }
}