石墨烯:Enum参数似乎不起作用

时间:2019-05-22 14:56:06

标签: python graphql graphene-python

我目前在突变枚举Argument上遇到困难。

下面是我的Mutation代码:

class CreatePerson(graphene.Mutation):
    foo = graphene.String()

    def mutate(self, info, **kwargs):
        return CreatePerson(foo='foo')


    class Arguments:
        enum_arg = graphene.Argument(graphene.Enum.from_enum(EnumArg))

枚举类:

from enum import Enum

class EnumArg(Enum):
    Baz = 0
    Bar = 1
    Spam = 2
    Egg = 3

使用 POSTMAN 的命令:

{
    "query": "mutation": {createPerson(enumArg=1) { foo }}
}

但我最终收到此错误消息:

"message": "Argument \"enumArg\" has invalid value 1.
            Expected type \"EnumArg\", found 1.",

我还尝试在enumArg=\"Bar\"突变上给出createPerson,但错误仍然存​​在。

1 个答案:

答案 0 :(得分:1)

定义枚举时,我们可以为枚举中的每个枚举值分配一个任意值。但是,此值仅由GraphQL服务本身在内部使用。例如,如果字段参数的类型是枚举,则此值将作为参数值传递给字段的解析器。但是,在编写GraphQL文档时,枚举值必须始终通过其名称而不是其值来引用。

mutation {
  createPerson(enumArg: Bar) {
    foo
  }
}