【问题标题】: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 中,即使您不赞成使用 any 或 number | 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
}
}
}