Как бороться с вложенным вводом в 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 в качестве входного аргумента. Я могу применять транзакции, так как я создам две новые записи и т. Д. Не уверен, что вы подразумеваете под вложенным вводом, если имеете в виду что-то еще. Просто дай мне знать:)

Другие вопросы по тегам