メインコンテンツへスキップ

hasura nested mutatoin

· loading · loading ·
kiitosu
著者
kiitosu
画像処理やデバイスドライバ、データ基盤構築からWebバックエンドまで、多様な領域に携わってきました。地図解析や地図アプリケーションの仕組みにも経験があり、幅広い技術を活かした開発に取り組んでいます。休日は草野球とランニングを楽しんでいます。
目次

初めに
#

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の構文ってややこしくてよくわからない!って思うけど、便利な場面がありますね。

Reply by Email

関連記事

SQSのクオータが分かりにくい
· loading · loading
WriteCapacityUnitとReadCapacityUnit
ORDER BY は 列毎に指定できる
· loading · loading