1
votes

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
use graphiql docs to check mutation signature - probably ONE input variable - pass all data as one input object (matching one input variable), try with graphiql using query variables (below query) ... then use code (apollo-client)xadm
thank you for your reply, actually i tried with TWO input variables and it worked fine. The problem is that i'm stack with the array list type. i want to dynamically persist that array of objects. regardsmaria

1 Answers

1
votes

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).