Как бороться с вложенным вводом в GraphQL
При написании запросов я могу определить преобразователь для любого поля, и значение этого поля будет определяться его преобразователем независимо от глубины запроса.
Однако, когда я пишу мутацию, мне кажется, что я могу определить распознаватели только на корневом уровне. Добавление метода разрешения к полям в моих аргументах или типе ввода, похоже, не оказывает никакого влияния.
Как лучше всего работать с вложенным вводом в мутациях?
1 ответ
Что вы подразумеваете под вложенным входом в ваши мутации? Типы ввода GraphQL не имеют резолверов. С резольверами вы просто определяете, как получить результаты. Если вы хотели бы иметь вложенный ввод, например, я хотел бы создать пользователя также с компанией. Затем я определю тип CreateUserInput CreateCompanyInput, например, в 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 в качестве входного аргумента. Я могу применять транзакции, так как я создам две новые записи и т. Д. Не уверен, что вы подразумеваете под вложенным вводом, если имеете в виду что-то еще. Просто дай мне знать:)