Módosítások (Mutations)
Létrehozás, frissítés, törlés, batch műveletek és input típusok GraphQL-ben.
Módosítások (Mutations)
A mutation az adatmódosítás művelete GraphQL-ben. Minden írási, frissítési és törlési művelet mutation. Szintaxisa hasonló a queryhez, de a mutation kulcsszóval kezdődik.
Egyszerű mutation: adat létrehozása
mutation CreateUser($input: CreateUserInput!) {
createUser(input: $input) {
id
name
email
createdAt
}
}Változók:
{
"input": {
"name": "Új Felhasználó",
"email": "uj@example.com",
"password": "biztonsagos_jelszo"
}
}Fontos: A mutation visszaadja a létrehozott objektumot – így a kliens azonnal megkapja az új adatot (például a szerver által generált id-t), külön lekérdezés nélkül.
Adat frissítése
mutation UpdateUser($id: ID!, $input: UpdateUserInput!) {
updateUser(id: $id, input: $input) {
id
name
email
updatedAt
}
}Változók:
{
"id": "123",
"input": {
"name": "Módosított Név"
}
}Adat törlése
mutation DeletePost($id: ID!) {
deletePost(id: $id) {
success
message
}
}Változók:
{
"id": "42"
}Több mutation egyszerre
GraphQL lehetővé teszi, hogy egyszerre több mutationt hajtson végre – ezek szekvenciálisan futnak (ellentétben a queryekkel, amelyek párhuzamosan futhatnak).
mutation BatchOperations {
createPost(input: { title: "Első bejegyzés", content: "..." }) {
id
title
}
updateUser(id: "1", input: { name: "Új Név" }) {
id
name
}
}Figyelem: A több mutation szekvenciális végrehajtása fontos, mert az adatok módosítása sorrendtől függhet.
Input típusok
A mutationökhöz általában külön Input típusokat definiálnak:
input CreateUserInput {
name: String!
email: String!
password: String!
role: UserRole = VIEWER
}
input UpdateUserInput {
name: String
email: String
avatar: String
}Az input típus hasonló a type-hoz, de kizárólag bemenetként (argumentumként) használható.
Rövid összefoglaló
- A mutation az adatmódosítás művelete: létrehozás, frissítés, törlés.
- A mutation visszaadja a módosított objektumot – nincs szükség külön lekérdezésre.
- Több mutation egyszerre is küldhető, és szekvenciálisan hajtódnak végre.
- Az input típusok a mutation argumentumainak struktúráját írják le.
- Mindig változókat használj a mutation argumentumaihoz, ne égesd bele az értékeket.