GraphQLError Неизвестный тип "XYZMutationInput"
Как создать тип ввода graphql для сериализатора DRF?
Я использую сериализаторы django rest framework (DRF), graphene-django
, и я могу видеть CreateThingMutationInput
тип, определенный в graphiql
:
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))
Я также могу видеть тип, определенный из graphql-codegen
в types.d.ts
:
export type CreateThingMutationInput = {
id?: Maybe<Scalars['Int']>,
...
}
Связанный:
1 ответ
Я забыл добавить mutation
kwarg в:
schema = graphene.Schema(query=Query)
Должно быть:
schema = graphene.Schema(query=Query, mutation=Mutation)
Другая причина, по которой это может произойти GraphQLError('Unknown type "Number".',)
если функция запроса получает неожиданный аргумент, например, вызов getThing
с Number
, вместо ID
:
query TestQueryWontWork(id: Number="") {
getThing(id: $id)
}
query TestQueryWorks(id: ID!) {
getThing(id: $id)
}