🐈
hasura nested mutatoin
初めに
hasura graphql でよくわからないミューテーションがあったので調査した。
結論
relationを作成した先のデータの書き込みを nested mutation という仕組みでサポートしています。
つまり、table_aからtable_bへのリレーションがあるとき、table_aへの書き込みをするようにtable_bへの書き込みを1回のmutationで実施できます。
整理
公式:https://hasura.io/docs/latest/mutations/postgres/multiple-mutations/
nested mutationの例
mutation insert_article {
insert_article(
objects: [
{
title: "Article 1",
content: "Sample article content",
author: {
data: {
name: "Cory"
}
}
}
]
) {
affected_rows
returning {
id
title
author {
id
name
}
}
}
}
この例だと、articleテーブルに書き込む時に、関連を持つauthorの情報としてnameを書き込む。
authorはリレーション名で、リレーションを生成しているフィールドとの値はこのmutationを実行した時に自動的に書き込まれる。
例えばm、article.author_id -> author.idの値でリレーションを持つとき、author_idには自動的にauthor.idが設定される。
逆向きのリレーションの場合も同じ。
今回の情報はhasuraの機能なので、その他のgraphqlサーバーでも同一なわけではないと思う。
最後に
graphqlの構文ってややこしくてよくわからない!って思うけど、便利な場面がありますね。
Discussion