İç İçe Mutation Kullanımı
İç içe mutation'lar, GraphQL'de kök türden farklı bir tür üzerinde mutation gerçekleştirmeyi mümkün kılar.
Aşağıdaki query, kök türdeki updatePost mutation alanını kullanarak standart bir mutation çalıştırır:
mutation {
updatePost(input: {
id: 5,
title: "New title"
}) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
title
}
}
}Yukarıdaki query, iç içe bir mutation aracılığıyla da çalıştırılabilir; burada post nesnesi önce post alanı üzerinden sorgulanır, ardından Post türüne ait update mutation alanı post nesnesi üzerine uygulanır:
mutation {
post(by: {id: 5}) {
update(input: {
title: "New title"
}) {
status
post {
title
}
}
}
}Mutation'lar ayrıca iç içe yerleştirilebilir; başka bir mutation'ın sonucu üzerindeki veriler değiştirilebilir:
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
}
}
}
}
}
}
}Basitleştirilmiş kök tür
İç içe mutation'lar, kök türü QueryRoot ve MutationRoot'tan, hem queries hem de mutation'ları yöneten tek bir Root türüne dönüştürür:

Mutation alanlarını görselleştirme
Mutation alanlarının hangileri olduğunu görselleştirmek için Voyager istemcisini kullanın.
İç içe mutation'lar sayesinde, şemadaki her tür hem query hem de mutation alanları içerebilir. Bunları birbirinden ayırt etmek için mutation alanının açıklamasının başına "[Mutation] " etiketi eklenir.
Örneğin, Root türü için alanlar şunlardır:

Endpoint'lerde iç içe mutation kullanımı
Şemanın iç içe mutation kullanıp kullanmayacağını tanımlayabileceğimiz 2 düzey bulunur. Öncelik sırasına göre:
1. Şema yapılandırmasında
Bir özel endpoint veya persisted query'nin iç içe mutation kullanması, ilgili şema yapılandırması aracılığıyla tanımlanabilir:

2. Ayarlarda tanımlanan varsayılan mod
Şema yapılandırmasının değeri "Default" ise, Ayarlarda tanımlanan mod kullanılır:

İç içe mutation'ları yapılandırma
Şema için seçebileceğimiz üç davranış vardır:
1. İç içe mutation'ları etkinleştirme
Bu seçenek, şema için iç içe mutation'ları devre dışı bırakır (bunun yerine standart davranışı kullanır).
2. İç içe mutation'ları etkinleştir, tüm mutation alanlarını kökte tut
İç içe mutation'lar etkinleştirildiğinde, mutation alanları şemaya iki kez eklenebilir:
- bir kez
Roottürü altında - bir kez belirli tür altında
Örneğin:
Root.updatePostPost.update
Bu seçenekle, kök türündeki "yinelenen" mutation alanları korunur.
3. İç içe mutation'ları etkinleştir, kökten gereksiz mutation alanlarını kaldır
Yukarıdakiyle aynı seçenek, ancak kök türündeki "yinelenen" mutation alanları kaldırılır.
Örneğin:
Root.updatePostkaldırılırPost.updatekullanılabilir
GraphQL spesifikasyonu
Bu işlevsellik şu an GraphQL spesifikasyonunun bir parçası değildir, ancak talep edilmiştir: