GraphQLError 未知类型“XYZMutationInput”
Posted
技术标签:
【中文标题】GraphQLError 未知类型“XYZMutationInput”【英文标题】:GraphQLError Unknown type "XYZMutationInput" 【发布时间】:2020-01-25 02:02:52 【问题描述】:如何为 DRF 序列化器创建 graphql 输入类型?
我正在使用 django rest 框架 (DRF) 序列化程序 graphene-django
,并且我能够看到在 graphiql
中定义的 CreateThingMutationInput
类型:
mutation TestCreate($input: CreateThingMutationInput!)
createProjectThing(input: $input)
id
errors
field
messages
但是,我无法运行:
schema = graphene.Schema(query=Query)
result = schema.execute(self.query, variables=variables)
我明白了:
[GraphQLError('Unknown type "CreateThingMutationInput".',)]
以下内容:
class CreateThingMutation(SerializerMutation):
class Meta:
serializer_class = ThingListViewSerializer
class Mutation(graphene.ObjectType):
debug = graphene.Field(DjangoDebug, name="_debug")
create_project_thing = CreateThingMutation.Field()
我也试过了:
class CreateThingMutationInput(graphene.ObjectType):
input = graphene.Field(convert_serializer_to_input_type(ThingListViewSerializer))
除了尝试定义一个:
class Input:
input = graphene.Field(convert_serializer_to_input_type(ThingListViewSerializer))
我还可以在types.d.ts
中看到从graphql-codegen
定义的类型:
export type CreateThingMutationInput =
id?: Maybe<Scalars['Int']>,
...
相关:
https://github.com/graphql-python/graphene/issues/531 https://github.com/graphql-python/graphene-django/blob/master/docs/mutations.rst#django-rest-framework https://github.com/graphql-python/graphene-django/issues/121【问题讨论】:
【参考方案1】:我忘记将mutation
kwarg 添加到:
schema = graphene.Schema(query=Query)
应该是:
schema = graphene.Schema(query=Query, mutation=Mutation)
GraphQLError('Unknown type "Number".',)
发生这种情况的另一个原因是,如果查询函数收到意外参数,例如使用 Number
而不是 ID
调用 getThing
:
query TestQueryWontWork(id: Number="")
getThing(id: $id)
query TestQueryWorks(id: ID!)
getThing(id: $id)
【讨论】:
以上是关于GraphQLError 未知类型“XYZMutationInput”的主要内容,如果未能解决你的问题,请参考以下文章
[GraphQL 错误]:消息:“rootMutation”类型的字段“createUser”上的未知参数“email”。位置:[object Object],路径:未定义
GraphQLError:类型查询必须定义一个或多个字段。使用类型鹅
合并模式后的“GraphQLError:类型中找不到字段:'query_root'”
错误 TS2416:“ApolloError”类型中的属性“originalError”不可分配给基类型“GraphQLError”中的相同属性