我从 graphql 模式中查询某种类型,对于特定字段,我想使用枚举描述而不是枚举值来获取它。
type Gigi {
a: SomeEnum!
b: Int!
}
enum SomeEnum {
"Bla"
BLA
"Foo"
FOO
}
我想获取"Gigi.a"字段,其中包含枚举的描述。 例如:
{
a: "Bla"
b: 5
}
有谁知道这是否可能?
类型、字段和枚举值的描述仅用于文档目的,因此只能通过内省查询访问:
query {
__type(name: "SomeEnum") {
enumValues {
name
description
}
}
}
另请注意,规范中没有任何内容要求枚举值全部大写,因此您可以拥有如下所示的枚举:
enum SomeEnum {
Bla
Foo
}
扩展答案:https://stackoverflow.com/a/57445851/8130763
//schema.graphql
type Gigi {
a: SomeEnum!
b: Int!
c: SecondEnum!
}
enum SomeEnum {
"Bla"
BLA
"Foo"
FOO
"Description with spaces"
DescriptionWithSpaceEnumValueInPascalCase
}
enum SecondEnum {
"moo one"
MooOne
"moo two"
MooTwo
}
查询
query {
a
SomeEnum: __type(name: "SomeEnum") {
enumValues {
description
name
}
}
SecondEnum: __type(name: "SecondEnum") {
enumValues {
description
name
}
}
}
示例响应
{
"data": {
"a": "DescriptionWithSpaceEnumValueInPascalCase",
"c": "MooOne"
},
"SomeEnum": {
"enumValues": [
{
"description": "Bla",
"name": "BLA"
},
{
"description": "Foo",
"name": "FOO"
},
{
"description": "Description with spaces",
"name": "DescriptionWithSpaceEnumValueInPascalCase"
}
]
},
"SecondEnum": {
"enumValues": [
{
"description": "moo one",
"name": "MooOne"
},
{
"description": "moo two",
"name": "MooTwo"
}
]
}
}