是否有查询枚举描述而不是值的选项



我从 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"
}
]
}
}

最新更新