【问题标题】:How to query same field with different types in an Union?如何在联合中查询具有不同类型的相同字段?
【发布时间】:2020-02-11 06:09:27
【问题描述】:

我有以下型号

type Duck {
    category: Baz
}

type Foo {
    size: FooSize
}

type Bar {
    size: BarSize
}

union Baz = Foo | Bar

以下查询引发错误Validation error of type FieldsConflict: size: they return differing types FooSize and BarSize @ 'duck/category'(这是此处所述的预期行为:https://github.com/graphql/graphql-js/issues/53

{
  duck {
    category {
      ... on Foo {
        size
      }
      ... on Bar {
        size
      }
    }
  }
}

size 上的别名将使查询工作,但我不能在这里使用它们,因为查询结果将被传递回另一个 API,该 API 期望 Duck.category 有一个完全命名为 size 的键。

我可以在这里使用任何解决方法或架构重构来使其正常工作吗?

【问题讨论】:

标签: graphql graphql-js


【解决方案1】:

概括地说,您只能做三件事来解决该错误:

  • 重构架构,使size 字段对于两种类型都是相同的类型。
  • 一个或两个字段的别名。
  • 仅请求其中一种类型的字段。

如果您需要将响应传递给另一个 API,最简单的方法是使用别名,然后在将响应发送到 API 之前在客户端转换它。

【讨论】:

    猜你喜欢
    • 2020-03-07
    • 2017-08-26
    • 2017-10-25
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    相关资源
    最近更新 更多