Mutation

Mutation has to start with the keyword mutation unlike query. Mutation is similar to POST, PUT in REST API.

Client side

To write a mutation, we follow the below format:

mutation AddUserToDatabase { 
  addUser(user: {username: "test", password: "password"}) {
    username
    password
  }
}

in here, we put in our object as an argument

{
	username: "test",
	password: "password"
}

Serverside

On serverside, first we will need a schema:

type Mutation {
	addUser(user: UserInput): User
}
    
input UserInput {
	username: String
	password: String
}

type User {  
	username: String  
	password: String  
}

Note: Here we have to declare our own input. Even if we have the User to be the exact same type as UserInput, we still need to declare it.

Next, we declare our resolver:

var rootValue = {
  addUser: (args, context, info) => {
    return args.user;
  }
};

Our resolver simply just return the inputed user.

{
    "data": {
        "addUser": {
            "username": "test",
            "password": "password"
        }
    }
}