We use update mutations to change existing data in a database through GraphQL. It helps keep information current without deleting and recreating records.
Update mutation pattern in GraphQL
mutation UpdateEntityName($id: ID!, $input: UpdateEntityInput!) {
updateEntityName(id: $id, input: $input) {
id
field1
field2
...
}
}The mutation name usually starts with update followed by the entity name.
You pass the id of the item to update and an input object with new values.
mutation UpdateUser($id: ID!, $input: UpdateUserInput!) {
updateUser(id: $id, input: $input) {
id
name
email
}
}mutation UpdatePost($id: ID!, $input: UpdatePostInput!) {
updatePost(id: $id, input: $input) {
id
title
content
}
}This mutation updates the email of the user with ID 123 to 'newemail@example.com'. It returns the user's id, name, and updated email.
mutation UpdateUserEmail($id: ID!, $input: UpdateUserInput!) {
updateUser(id: $id, input: $input) {
id
name
email
}
}
# Variables:
# {
# "id": "123",
# "input": {"email": "newemail@example.com"}
# }Always provide the id to specify which record to update.
The input object should only include fields you want to change.
Check your GraphQL schema for exact input types and required fields.
Update mutations change existing data by specifying an ID and new values.
They help keep data accurate without deleting or recreating records.
Use clear input objects to send only the fields you want to update.
Practice
update mutation in GraphQL?Solution
Step 1: Understand the role of update mutations
Update mutations modify existing records by identifying them and applying new values.Step 2: Differentiate from other mutation types
Delete mutations remove data, create mutations add new data, and queries fetch data without changes.Final Answer:
To change existing data by specifying an ID and new values -> Option BQuick Check:
Update mutation = change existing data [OK]
- Confusing update with create or delete mutations
- Thinking update fetches data without changes
- Assuming update creates new records
Solution
Step 1: Identify the mutation keyword and operation
Update mutations use themutationkeyword and specify the update operation with an ID and input object.Step 2: Check the options for correct mutation syntax
mutation { updateUser(id: "123", input: {name: "Alice"}) { id name } } usesmutationwithupdateUserand input fields correctly; others use wrong operation or query keyword.Final Answer:
mutation { updateUser(id: "123", input: {name: "Alice"}) { id name } } -> Option AQuick Check:
Update mutation syntax = mutation + update operation + input [OK]
- Using 'query' instead of 'mutation'
- Using create or delete operation instead of update
- Missing input object for new values
mutation { updatePost(id: "5", input: {title: "New Title"}) { id title content } }What will be the output if the post with ID 5 exists and has content "Old content"?
Solution
Step 1: Understand the mutation effect
The mutation updates the post with ID 5, changing only the title to "New Title" while keeping other fields unchanged.Step 2: Predict the returned data
The response includes the updated title and the unchanged content "Old content" along with the ID.Final Answer:
{ "data": { "updatePost": { "id": "5", "title": "New Title", "content": "Old content" } } } -> Option CQuick Check:
Update mutation returns updated fields plus unchanged fields [OK]
- Assuming all fields reset or become null
- Expecting error when post exists
- Ignoring unchanged fields in output
mutation { updateUser(input: {name: "Bob"}) { id name } }Solution
Step 1: Check required arguments for update mutation
Update mutations require an ID to identify the record to update.Step 2: Analyze the given mutation
The mutation lacks the ID argument, so it cannot know which user to update.Final Answer:
Missing the ID argument to specify which user to update -> Option AQuick Check:
Update mutation must include ID argument [OK]
- Omitting the ID argument
- Confusing input object name
- Using 'query' instead of 'mutation'
mutation UpdateUser($id: ID!, $email: String!, $phone: String) {
updateUser(id: $id, input: {email: $email, phone: $phone}) {
id
email
phone
}
}Solution
Step 1: Understand conditional updates in GraphQL
To update only provided fields, omit fields not meant to be changed from the input object.Step 2: Analyze options for handling optional phone
Sending null or empty string may overwrite data; omitting the phone field avoids unintended changes.Final Answer:
Remove phone field from input object when not updating -> Option DQuick Check:
Omit fields to keep existing values unchanged [OK]
- Sending null overwrites existing data
- Using empty string instead of omitting field
- Creating unnecessary multiple mutations
Ready to prove it?
Pass the test and this pattern moves unknown
