【问题标题】:I need a type for a graphql property that could be two 2 types我需要一个 graphql 属性的类型,它可以是两个 2 类型
【发布时间】:2021-10-29 20:02:00
【问题描述】:

所以我有一些如下代码:

input Data {
  activityValue: Int
}

但我需要它更像

input Data {
  activityValue: Int | String!
}

我知道在 typescript 中,即使您不赞成使用 anynumber | string。 graphql 中有这样的东西吗?

【问题讨论】:

    标签: graphql graphql-js graphql-schema


    【解决方案1】:

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

    来自规范:

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

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

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

    union Media = Book | Movie
    

    然后作为类型使用:

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

    示例取自Apollo Docs

    如果你想检查你的查询,如果你有某种类型的联合类型,那么你需要使用内联片段来做到这一点。

    query Test {
      singleMedia(id: 123) {
        name
        ... on Book {
          author
        }
        ... on Movie {
          musicTitle
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-21
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 2020-05-01
      • 2013-12-09
      • 1970-01-01
      • 2022-12-19
      相关资源
      最近更新 更多