Learning
GraphQL

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.

On this page