Как построить мутацию GraphQL, содержащую массив, используя Angular? - PullRequest
0 голосов
/ 16 января 2020

У меня есть этот typeDef на сервере:

extend type Mutation {
    setMySkills (skills: [
        SkillUpdated!
    ]!) : [MySkills]
}
type MySkills {
    name: String!,
    id: Int!,
    order: Int!,
    from: String!,
    to: String,
    minYear: Int!
}
input SkillUpdated {
    name: String, 
    id: Int, 
    order: Int!, 
    fromMonth:Int!,
    fromYear:Int, 
    toMonth:Int, 
    toYear: Int
}

Итак, чтобы использовать его на игровой площадке, я могу сделать следующее:

mutation {
   setMySkills(
     skills: [
       { name: "Skill1", id: 1, order: 0, fromMonth: 0, fromYear: 1999 }
       { name: "Skill2", id: 2, order: 1, fromMonth: 9, fromYear: 1994 }
       ]) 
       {name, id, order, from, to, minYear}
}

На моем Angular Приложение У меня есть это:

submitQuery = gql`
input SkillType {
  name: String!, 
  id: Int!, 
  order: Int!, 
  fromMonth: Int!, 
  fromYear: Int!, 
  toMonth: Int,
  toYear: Int!
} 



 mutation setMySkills($skills: [SkillType!]) 
 {
  setMySkills(skills: $skills)
  }`

this.apollo.mutate({
  mutation: this.submitQuery,
  variables: {
          skills: 
             [
               { name: "Skill1", id: 1, order: 0, fromMonth: 0, fromYear: 1999},
               { name: "Skill2", id: 2, order: 1, fromMonth: 9, fromYear: 1994 }
             ]
  }
]).subscribe(({ data }) => {
  console.log(data
},(error) => {
  console.log(error)
});

Но я получил: Нарушение инварианта: определения типов схем не допускаются в запросах. Найдено: "InputObjectTypeDefinition"

Любая помощь?

...