Verschachtelte Mutations verwenden
Verschachtelte Mutations ermöglichen es, Mutations auf einem anderen Typ als dem Root-Typ in GraphQL auszuführen.
Die folgende Query führt eine Standard-Mutation aus und verwendet dabei das Mutation-Feld updatePost vom Root-Typ:
mutation {
updatePost(input: {
id: 5,
title: "New title"
}) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
title
}
}
}Die obige Query kann auch über eine verschachtelte Mutation ausgeführt werden, bei der das Post-Objekt zuerst über das Feld post abgefragt wird und dann das Mutation-Feld update, das zum Typ Post gehört, auf das Post-Objekt angewendet wird:
mutation {
post(by: {id: 5}) {
update(input: {
title: "New title"
}) {
status
post {
title
}
}
}
}Mutations können auch verschachtelt werden und dabei Daten am Ergebnis einer anderen Mutation ändern:
mutation {
createPost(input: {
title: "First title"
}) {
status
postID
post {
update(input: {
title: "Second title",
contentAs: { html: "Some content" }
}) {
status
post {
title
content
addComment(input: {
commentAs: { html: "My first comment" }
}) {
status
commentID
comment {
content
date
}
}
}
}
}
}
}Vereinfachter Root-Typ
Verschachtelte Mutations ändern den Root-Typ von QueryRoot und MutationRoot zu einem einzigen Typ Root, der sowohl queries als auch Mutations verarbeitet:

Mutation-Felder visualisieren
Verwende den Voyager-Client, um zu sehen, welche die Mutation-Felder sind.
Mit verschachtelten Mutations kann jeder Typ im Schema sowohl Query- als auch Mutation-Felder enthalten. Um sie zu unterscheiden, wird der Beschreibung des Mutation-Felds das Label "[Mutation] " vorangestellt.
Diese sind zum Beispiel die Felder für den Typ Root:

Verschachtelte Mutations in den Endpoints verwenden
Es gibt 2 Ebenen, auf denen du festlegen kannst, ob das Schema verschachtelte Mutations verwendet oder nicht. In Prioritätsreihenfolge:
1. In der Schema-Konfiguration
Ob ein Custom Endpoint oder eine Persisted Query verschachtelte Mutations verwendet, kann über die entsprechende Schema-Konfiguration festgelegt werden:

2. Standardmodus, definiert in den Einstellungen
Wenn die Schema-Konfiguration den Wert "Default" hat, wird der in den Einstellungen definierte Modus verwendet:

Verschachtelte Mutations konfigurieren
Es gibt drei Verhaltensweisen, die du für das Schema wählen kannst:
1. Verschachtelte Mutations nicht aktivieren
Diese Option deaktiviert verschachtelte Mutations (verwendet stattdessen das Standardverhalten) für das Schema.
2. Verschachtelte Mutations aktivieren und alle Mutation-Felder im Root behalten
Wenn verschachtelte Mutations aktiviert sind, können Mutation-Felder dem Schema zweimal hinzugefügt werden:
- einmal unter dem Typ
Root - einmal unter dem spezifischen Typ
Zum Beispiel:
Root.updatePostPost.update
Mit dieser Option werden die „duplizierten" Mutation-Felder des Root-Typs beibehalten.
3. Verschachtelte Mutations aktivieren und die redundanten Mutation-Felder aus dem Root entfernen
Gleiche Option wie oben, aber mit Entfernung der „duplizierten" Mutation-Felder aus dem Root-Typ.
Zum Beispiel:
Root.updatePostwird entferntPost.updateist verfügbar
GraphQL-Spezifikation
Diese Funktionalität ist derzeit nicht Teil der GraphQL-Spezifikation, wurde aber angefragt: