Мутация GraphQL, которая принимает многоуровневый массив объектов в одном запросе - PullRequest
0 голосов
/ 22 июня 2019

Мне нужно иметь возможность создать продукт и добавить его levelwithskills (массив объектов, содержащий имя уровня и массив навыков) в одном запросе.

У меня есть эта схема:

input LevelData {
    name: String!
    skills: [SkillsData]!
}

input SkillsData {
    name: String!
    price: Int
    duration: Int
    stepbystep: String
    teamchallange: String
}

type Mutation {
    createProduct(productInputData: ProductInputData): String
}

input ProductInputData {
    type: String!
    passion: String!
    course: String!
    levelwithskills: [LevelData]
    skills: [String]
    startdate: String!
    enddate: String!
}

Запрос, который я пытаюсь отправить

createProduct(productInputData: {
    passion: "Tester"
    course: "Java and BDD"
    skills: ["HTML/CSS/JS"]
    levelwithskills: [{
      name: "Beginner"
      skills: [{
        name: "HTML/CSS/JS"
      }]
    },
    {
      name: "Intermediate"
      skills: [{
        name: "HTML/CSS/JS"
      }]
    }]
    startdate: "2019-06-20T11:00:09.459Z"
    enddate: "2019-06-20T11:30:09.459Z"
    type: "privatelesson"
  })

Но Graphql выдает ошибку, которая гласит:

Validation error of type WrongType: argument 'productInputData.levelwithskills[0]' with value 'ObjectValue{objectFields=[ObjectField{name='type', value=StringValue{value='privatelesson'}}, ObjectField{name='course', value=StringValue{value='Java and BDD'}}, ObjectField{name='passion', value=StringValue{value='Tester'}}, ObjectField{name='levelwithskills', value=ArrayValue{values=[EnumValue{name='object'}, EnumValue{name='Object'}]}}, ObjectField{name='skills', value=ArrayValue{values=[StringValue{value='HTML/CSS/JS'}]}}, ObjectField{name='startdate', value=StringValue{value='2019-06-19T16:00:00.000Z'}}, ObjectField{name='enddate', value=StringValue{value='2019-06-19T16:45:00.000Z'}}' must be an object type @ 'createProduct'

1 Ответ

0 голосов
/ 11 июля 2019

В вашей схеме у вас есть одно поле мутации с именем createProduct, но вы сказали, что запрос, который вы пытаетесь отправить, называется createProductPayment, так что я предполагаю, что он скрывает другую часть вашей схемы.Есть ли еще что-то в вашей схеме, которым вы можете поделиться с нами?

...