При написании запросов я могу определить преобразователь для любого поля, и значение этого поля будет определяться его преобразователем, независимо от глубины запроса.
Однако при написании мутации я, кажется, могу определить преобразователи только на корневом уровне. Добавление метода разрешения к полям в моих аргументах или типе ввода, похоже, не влияет.
Как лучше всего справляться с вложенным вводом при мутациях?


Что вы подразумеваете под вложенным вводом в ваших мутациях? Типы ввода GraphQL не имеют преобразователей. С резольверами вы просто определяете, как получить результаты. Если вы хотите иметь вложенный ввод, например например, я хотел бы создать пользователя также с компанией. Затем я определю тип CreateUserInputCreateCompanyInput, например, в SDL
input CreateCompanyInput {
name: String!
type: CompanyEnum!
}
input CreateUserInput {
username: String!
firstname: String!
lastname: String!
company: CreateCompanyInput!
}
type Mutation {
createUser(input: CreateUserInput!): User
}
Таким образом, я в основном вкладываю аргументы и могу реализовать более сложные мутации. Вдобавок я могу повторно использовать CreateCompanyInput для мутации createCompany, если мне нужна мутация даже для этого. Тогда у меня будет весь CreateUserInput даже с CreateCompanyInput в преобразователе createUser в качестве входного аргумента. Я могу применять транзакции, поскольку создам две новые записи и т. д. Не уверен, что вы имеете в виду вложенный ввод, если вы имеете в виду что-то еще. Просто дай мне знать :)
Это пример мутации для создания пользователя. Запрос GraphQL может выглядеть, например, следующим образом: `createUserMutation ($ input: CreateUserInput!) {CreateUser (input: $ input) {id, firstname, lastname}}`. Для этого кода вам также необходимо передать соответствующие переменные.
как бы выглядел файл .graphql с mutation CreateUser { createUser(input: { ... }) }?
Какой фронт вы используете для этого? Как выглядит запрос внешнего интерфейса?