Как бороться с вложенным вводом в GraphQL - PullRequest
0 голосов
/ 02 сентября 2018

При написании запросов я могу определить преобразователь для любого поля, и значение этого поля будет определяться его преобразователем независимо от глубины запроса.

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

Как лучше всего работать с вложенным вводом в мутациях?

1 Ответ

0 голосов
/ 03 сентября 2018

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

...