0

所以我有一些如下代码:

input Data {
  activityValue: Int
}

但我需要它更像

input Data {
  activityValue: Int | String!
}

我知道在打字稿中,即使不赞成您可以使用anyor number | string。graphql中有这样的东西吗?

4

1 回答 1

0

GraphQL 规范中没有真正的多类型。但是,Unions可以满足您的需求。

从规范:

GraphQL 联合表示一个对象,它可能是 GraphQL 对象类型列表之一,但在这些类型之间不提供保证字段。

这意味着联合可以包含类型,但不能包含标量或列表。

例如,可以这样声明联合:

union Media = Book | Movie

然后用作类型:

type Query {
  allMedia: [Media] # This list can include both Book and Movie objects
}

示例取自Apollo Docs

如果您想检查您的查询,如果您有某种类型的 Union 类型,那么您需要使用内联片段来执行此操作。

query Test {
  singleMedia(id: 123) {
    name
    ... on Book {
      author
    }
    ... on Movie {
      musicTitle
    }
  }
}
于 2021-08-31T07:49:05.350 回答