Implementing a Mutation
Mutations are defined in the schema just as queries, but with the concept of the Mutation type. In the above example, we have three mutations: These are addBook, updateBook and deleteBook operations and all of them work with books table.
Add a Book:
To add a new book, use the following mutation:
mutation {
addBook(title: "The Great Gatsby", author: "F. Scott Fitzgerald") {
id
title
author
}
}
Output
This mutation invokes the addBook resolver function, which generates a new book id, creates a new book object with the new id and the provided fields, inserts the new book to the end of the books array and returns the new book.
Update a Book:
Here is a mutation that will help to update an existing book:
mutation {
updateBook(id: 1, title: "Nineteen Eighty-Four") {
id
title
author
}
}
Output:
This mutation executes the updateBook resolver function, which accepts the id, and compares the new title and/or author fields to the book object found by its id, then returns the updated book.
Delete a book:
Use the following mutation to delete a book:
mutation {
deleteBook(id: 2) {
id
title
author
}
}
Output:
This mutation invokes the deleteBook resolver function, which takes the book based on the id, removes that particular book from the books array, and returns A product containing the deleted book.
Mutations in GraphQL
GraphQL is a query language for REST APIs created by Facebook which is designed to provide more efficiency, flexibility, and superiority in data handling.
While GraphQL queries are used to retrieve information, mutations are used to perform data operations on the server, similar to HTTP Commands like POST, PUT, PATCH, and DELETE in REST APIs. In this article, We will learn about the Mutations in GraphQL in detail.