草莓 GraphQL return 字典
Strawberry GraphQL return dict
我想创建一个以字典作为参数的突变。有特定于实现的原因想要这样做,而不是为 dict 对象创建 type/schema。
对象
# types.py
import typing
@strawberry.type
class Thing:
data: typing.Dict
解析器
# resolvers.py
import typing
from .types import Thing
def create_config(data: typing.Dict) -> Thing:
pass
突变模式
# mutations.py
import strawberry
from .types import Thing
from .resolvers import create_thing
@strawberry.type
class Mutations:
create_thing: Thing = strawberry.mutation(resolver=create_thing)
所需示例查询
mutation {
createThing(data: {}) {}
}
通过阅读文档,没有 GraphQL 标量等同于 dict。当我尝试测试时,这个编译错误证明了这一点:
TypeError: Thing fields cannot be resolved. Unexpected type 'typing.Dict'
我的直觉是将 dict 扁平化为 JSON 字符串并以这种方式传递。这看起来不优雅,这让我觉得有一种更惯用的方法。我应该从这里去哪里?
而不是序列化的 JSON 字符串,JSON 本身可以是一个标量。
from strawberry.scalars import JSON
@strawberry.type
class Thing:
data: JSON
def create_config(data: JSON) -> Thing:
pass
我想创建一个以字典作为参数的突变。有特定于实现的原因想要这样做,而不是为 dict 对象创建 type/schema。
对象
# types.py
import typing
@strawberry.type
class Thing:
data: typing.Dict
解析器
# resolvers.py
import typing
from .types import Thing
def create_config(data: typing.Dict) -> Thing:
pass
突变模式
# mutations.py
import strawberry
from .types import Thing
from .resolvers import create_thing
@strawberry.type
class Mutations:
create_thing: Thing = strawberry.mutation(resolver=create_thing)
所需示例查询
mutation {
createThing(data: {}) {}
}
通过阅读文档,没有 GraphQL 标量等同于 dict。当我尝试测试时,这个编译错误证明了这一点:
TypeError: Thing fields cannot be resolved. Unexpected type 'typing.Dict'
我的直觉是将 dict 扁平化为 JSON 字符串并以这种方式传递。这看起来不优雅,这让我觉得有一种更惯用的方法。我应该从这里去哪里?
而不是序列化的 JSON 字符串,JSON 本身可以是一个标量。
from strawberry.scalars import JSON
@strawberry.type
class Thing:
data: JSON
def create_config(data: JSON) -> Thing:
pass