📖 Scenario: You are building a simple GraphQL API for a bookstore. You want to ensure that when users add new books, the input data is validated properly to avoid errors like missing required fields or invalid data types.
🎯 Goal: Create a GraphQL schema with a Book type and a mutation addBook that validates input fields. Implement validation rules to catch errors such as missing title or author and invalid year values.
📋 What You'll Learn
Define a Book type with fields id, title, author, and year
Create an input type BookInput with the same fields except id
Add a mutation addBook that accepts BookInput and returns a Book
Implement validation to check that title and author are not empty
Validate that year is a positive integer
Return clear validation error messages when input is invalid
💡 Why This Matters
🌍 Real World
GraphQL APIs often require input validation to ensure data integrity and provide clear error messages to clients.
💼 Career
Understanding how to handle validation errors in GraphQL is essential for backend developers building robust APIs.
Progress0 / 4 steps
1
Define the Book type and BookInput input type
Write the GraphQL schema to define a Book type with fields id (ID!), title (String!), author (String!), and year (Int). Also define an input type BookInput with fields title (String!), author (String!), and year (Int).
GraphQL
Hint
Use type to define the Book object and input to define BookInput. Mark required fields with !.
2
Add the addBook mutation to the schema
Add a mutation called addBook that takes one argument input of type BookInput! and returns a Book.
GraphQL
Hint
Define a Mutation type with the addBook mutation accepting input of type BookInput!.
3
Implement validation logic for addBook mutation
In your resolver for addBook, add validation to check that input.title and input.author are not empty strings, and that input.year is a positive integer if provided. Return validation error messages if any check fails.
GraphQL
Hint
Use throw new Error() to return validation errors. Check for empty strings with trim() and validate year as a positive number.
4
Complete the schema with Query type and export
Add a Query type with a books field that returns a list of Book. Export the schema and resolvers for use in your GraphQL server.
GraphQL
Hint
Define a Query type with a books field returning a list of Book. Export typeDefs and resolvers for your server.
Practice
(1/5)
1. What does a validation error in GraphQL indicate?
easy
A. The data returned is empty
B. The query has a mistake and cannot run correctly
C. The server is down and cannot respond
D. The query executed successfully
Solution
Step 1: Understand the purpose of validation errors
Validation errors occur when the GraphQL query has syntax or structure mistakes.
Step 2: Identify what validation errors prevent
They stop the query from running and returning data until fixed.
Final Answer:
The query has a mistake and cannot run correctly -> Option B
Quick Check:
Validation error = query mistake [OK]
Hint: Validation errors mean query mistakes, not server or data issues [OK]
Common Mistakes:
Confusing validation errors with server errors
Thinking validation errors mean empty data
Assuming validation errors mean success
2. Which of the following is a correct way to handle validation errors in a GraphQL query?
easy
A. Ignore errors and use the data anyway
B. Delete the database to remove errors
C. Check the error messages and fix the query syntax
D. Restart the server to clear errors
Solution
Step 1: Identify proper error handling
Validation errors require checking messages to understand what is wrong in the query.
Step 2: Fix the query syntax based on error details
Correcting the query syntax resolves validation errors so the query can run.
Final Answer:
Check the error messages and fix the query syntax -> Option C
Quick Check:
Fix syntax after error check = correct handling [OK]
Hint: Fix query syntax after reading error messages [OK]
Common Mistakes:
Ignoring errors and using bad data
Restarting server does not fix query errors
Deleting database is unrelated to validation errors
3. Given this GraphQL query snippet: { user(id: 1) { name age } } If the schema does not define an age field for user, what validation error will occur?
medium
A. "Field 'age' is not defined on type 'User'"
B. "Syntax error near 'user'"
C. "Missing required argument 'id'"
D. "Server timeout error"
Solution
Step 1: Check the query fields against schema
The query asks for age on user, but schema lacks this field.
Step 2: Identify the validation error message
GraphQL reports that the field is not defined on the type.
Final Answer:
"Field 'age' is not defined on type 'User'" -> Option A
Quick Check:
Undefined field error = "Field 'age' is not defined on type 'User'" [OK]
Hint: Check if requested fields exist in schema [OK]
Common Mistakes:
Confusing syntax errors with missing fields
Assuming missing arguments cause this error
Thinking server errors are validation errors
4. You wrote this GraphQL query: { product(id: ) { name price } } It causes a validation error. What is the main problem?
medium
A. Missing value for the argument id
B. Incorrect field names name and price
C. Extra brackets around the query
D. No query operation keyword like query
Solution
Step 1: Inspect the argument syntax
The argument id is empty; it needs a value like a number or string.
Step 2: Understand validation error cause
GraphQL requires argument values; missing values cause syntax validation errors.
Final Answer:
Missing value for the argument id -> Option A
Quick Check:
Empty argument value causes validation error [OK]
Hint: Always provide values for required arguments [OK]
Common Mistakes:
Thinking field names cause error here
Assuming brackets are extra
Believing 'query' keyword is mandatory
5. You want to query a list of books with optional filtering by author name. Your query is:
{ books(author: "Alice") { title author } }
But the schema defines author as a non-nullable field in Book, not as an argument for books. What validation error will you get?
hard
A. "Invalid query operation"
B. "Field 'author' must not be null"
C. "Missing required field 'title'"
D. "Unknown argument 'author' on field 'books'"
Solution
Step 1: Analyze the query arguments vs schema
The query uses author as an argument to books, but schema does not allow this argument.
Step 2: Identify the validation error message
GraphQL reports unknown argument errors when arguments are not defined on fields.
Final Answer:
"Unknown argument 'author' on field 'books'" -> Option D
Quick Check:
Invalid argument name causes unknown argument error [OK]
Hint: Check if arguments exist on queried fields in schema [OK]
Common Mistakes:
Confusing field nullability with argument errors
Assuming missing fields cause this error
Thinking query operation keyword is missing
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.