graphql - 如何在联合中查询不同类型的相同字段?

标签 graphql graphql-js

我有以下模型

type Duck {
    category: Baz
}

type Foo {
    size: FooSize
}

type Bar {
    size: BarSize
}

union Baz = Foo | Bar

以下查询引发错误类型 FieldsConflict 的验证错误:大小:它们返回不同类型的 FooSize 和 BarSize @'duck/category'(这是此处所述的预期行为:https://github.com/graphql/graphql-js/issues/53)

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

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

我可以在这里使用任何变通方法或模式重构来使它正常工作吗?

最佳答案

在高层次上,您只能做三件事来解决该错误:

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

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

关于graphql - 如何在联合中查询不同类型的相同字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58379796/

相关文章:

node.js - GraphQL 的相关论证

javascript - 无法编写 GraphQL Mutation 来在数据库中创建新用户

javascript - NestJS 和 GraphQL - TypeError : graphql_1. parse is not a function with minimal setup

javascript - 获取内容时 graphql 查询中出现未知类型错误?

node.js - 使用 graphql 和 apollo 在 Altair 中上传文件时出现 400 Bad Request

GraphQL 产品查询访问被拒绝

ios - Swift 中 Apollo 的自动 UI 更新不起作用

node.js - 在 Google Cloud App Engine 上运行 GraphQL 服务器

javascript - 您如何为针对 ORM 的分页定义中继连接?

javascript - 如何修复 graphql 突变类型名称错误