#python #graphql #graphene-python
#python #graphql #graphene-python
Вопрос:
У меня есть следующий код. Запрос — это моя корневая схема. Если у меня есть только один profile
, можно использовать метод resolve внутри запроса. Но что, если схема слишком большая? В любом случае нужно перемещаться resolve_profile
внутри типа объекта Profile?
import graphene
class Query(graphene.ObjectType):
profile = graphene.ObjectType(Profile)
def resolve_profile(self):
return ...
class Profile(graphene.ObjectType):
firstName = graphene.String(graphene.String)
lastName = graphene.String(graphene.String)
Комментарии:
1. Я не знаком с graphene, но я думаю, что Query также обрабатывается как любой другой тип объекта при определении схемы, поэтому каждое поле должно иметь свой собственный распознаватель в своем типе
Ответ №1:
Нет, вы не можете resolve_profile
перейти Profile
, но есть другой способ справиться с большой схемой. Вы можете разбить свой запрос на несколько файлов и наследовать каждый из этих файлов Query
. В этом примере я ворвался Query
в AQuery
, BQuery
и CQuery
:
class Query(AQuery, BQuery, CQuery, graphene.ObjectType):
pass
И тогда вы могли бы определить AQuery
в другом файле, подобном этому:
class AQuery(graphene.ObjectType):
profile = graphene.ObjectType(Profile)
def resolve_profile(self):
return ...
и поместите другой код в BQuery
и CQuery
.
Вы также можете использовать ту же технику для разделения ваших мутаций.