如何使用石墨烯的变异方法从字典列表中提取数据?

How can I extract data from a list of dicts using graphene's mutation method?

我正在尝试使用 graphql mutation 创建对象列表,但没有成功。我已确定错误,请查看代码片段并评论错误传播的位置。

注意:我在 Flask 上使用 Graphene 和 Python 2.7

这是一个有效负载示例:

mutation UserMutation {
    createUser(
        phones: [
            {
                “number”: “609-777-7777”,
                “label”: “home"   
            },
            {
                “number”: “609-777-7778”,
                “label”: “mobile"   
            }
        ]
    )
}

关于架构,我有以下内容:

class CreateUser(graphene.Mutation):
    ok = graphene.Boolean()
    ...
    phones = graphene.List(graphene.String())  # this is a list of string but what I need is a list of dicts!

要将字典作为输入,您需要使用 InputObjectType。 (InputObjectTypes 类似于 ObjectType,但仅用于输入数据)。

这个例子应该适用于石墨烯 1.0

class PhoneInput(graphene.InputObjectType):
    number = graphene.String()
    label = graphene.String()

class CreateUser(graphene.Mutation):
    class Input:
        phones = graphene.List(PhoneInput)
    ok = graphene.Boolean()

class Mutation(graphene.ObjectType):
    create_user = CreateUser.Field()