
機能:
ネストされたミューテーション
ネストされたミューテーション
GraphQLにおいて、ミューテーションはルートタイプにのみ公開されます。その結果、ルートタイプは肥大化し、ミューテーションであるという技術的な共通点以外に何も関係のないフィールドが大量に含まれることになります(これはインターフェース設計の判断ではなく、技術的な問題です)。
ネストされたミューテーションは、ルートタイプだけでなく任意のタイプでミューテーションを実行できるようにすることで、スキーマをより論理的でブラウズしやすくします。また、別のミューテーションの結果に対してデータを変更できるため、複数のリクエストを実行する際のレイテンシを回避でき、パフォーマンスの向上にも役立ちます。
以下のGraphQLクエリはネストされたミューテーションを示しています:
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
}
}
}
}
}
}
}