Graphql Mutation with Array types

Viewed 1032

I'm trying to write a mutation query and it works perfectly with graphql

mutation($project: ProjectsInput) {
  NewProject(project: $project) {
    name,
    namespace,
    environments{
      env,      
    }}}

these are the query variables

{"project": {
   "name": "Pr1",
  "namespace": "Pr2",
  "environments": 

  [{"env": "rec"},{"env": "dev"}]


}}

and this is how it looks graphql mutation now I am trying to use Apollo Client in angular to build this mutation like so


    createProject() {
    this.apollo.mutate({
      mutation: gql`
      mutation($project: ProjectsInput) {
        NewProject(project: $project) {
          name,
          namespace,
          environments{
            env,      
          }
    `,
      variables: { 
        project: {
          name: "sth",
          namespace: "sth2",
          env: [
            {env:"env1"},
            {env:"env2"}
          ]
        } 
      }
    }).subscribe(data => {
      console.log('New project created!', data);

    });  }

But i'm getting Http failure response because of the variable $env of type Array.i want to pass an array as a variable for the query in apollo client.I don't have problems with variables of type string but the array objects causes this error.

1 Answers

NewProject(project: shows that your NewProject mutation needs one project parameter

change query to

mutation($project: ProjectsInput) {
  NewProject(project: $project) {
    name,
    namespace,
    environments{
      env,      
    }

and pass one, entire object to variable project

use query variables in graphiql to define test variables:

{ 
  project: {
    name: "sth",
    namespace: "sth2",
    environments: [
      {env:"env1"},
      {env:"env2"}
    ]
  } 
}

then in client prepare the same kind of object for project variable (with structure matching your mutation input type, of course).

Related