2017-07-22 13 views
3

私はフロントエンドでreact-apolloを、バックエンドでgraphcoolを使用しています。apollo-reactの突然変異にオブジェクトの配列を追加

this.props.createTutorialMutation({ 
     variables: { 
     author, 
     link, 
     title, 
     completed: false, 
     postedById 
     } 
    }) 

すべてが素晴らしく動作します...

const CREATE_TUTORIAL_MUTATION = gql` 
    mutation CreateTutorialMutation(
    $author: String 
    $link: String 
    $title: String! 
    $postedById: ID! 
    $completed: Boolean! 
) { 
    createTutorial(
     author: $author 
     link: $link 
     title: $title 
     postedById: $postedById 
     completed: $completed 
    ) { 
     author 
     link 
     title 
     postedBy { 
     id 
     name 
     } 
     completed 
    } 
    } 
` 

それはそうのように提出するハンドラで呼び出さ:私はそうのようなチュートリアルを作成する変異を有します。

ここで、新しいチュートリアルを作成するときに、一連のタグを追加します。私は入力フィールドを作成し、タグ変数がオブジェクトの配列であり、それぞれがidのタグとのテキストというタグの配列であるように接続しました。

タグフィールドを突然変異に追加しようとすると、スカラータイプが必要です。しかし、オブジェクトの配列のスカラ型ではないようです。

私が突然変異を呼び出すときにパラメータとしてタグ変数を渡すと、突然変異のスカラー型フィールド(行148ではhttps://github.com/joshpitzalis/path/blob/graphQL/src/components/Add.js)とスキーマにどのように記入するのですか?

私はgraphQLを初めて使用しています。私はこれを完全に間違った方法に近づけるかもしれないことを理解しています。その場合、graphQLの突然変異にどのようにオブジェクトの配列を追加するのですか?

答えて

4

あなたのスキーマファイルに新しいTagタイプを追加し、新しい関係をTutorialに接続する必要があります

type Tutorial { 
    author: String 
    completed: Boolean 
    link: String 
    title: String! 
    id: ID! @isUnique 
    createdAt: DateTime! 
    updatedAt: DateTime! 
    postedBy: User @relation(name: "UsersTutorials") 
    tags: [Tag!]! @relation(name: "TutorialTags") 
} 

type Tag { 
    id: ID! 
    tag: String! 
    number: Int! 
    tutorials: [Tutorial!]! @relation(name: "TutorialTags") 
} 

その後、あなたは、このような突然変異を作成するネストされたを使用して、新しいチュートリアルと新しいタグを作成することができます。

const CREATE_TUTORIAL_MUTATION = gql` 
    mutation CreateTutorialMutation(
    $author: String 
    $link: String 
    $title: String! 
    $tags: [TutorialtagsTag!]! 
    $completed: Boolean! 
    $postedById: ID! 
) { 
    createTutorial(
     author: $author 
     link: $link 
     title: $title 
     tags: $tags 
     completed: $completed 
     postedById: $postedById 
    ) { 
     author 
     link 
     title 
     postedBy { 
     id 
     name 
     } 
     completed 
     tags { 
     id 
     text 
     } 
    } 
    } 
` 

この投稿は、他のアプローチとそのトレードオフについての詳細な背景を与える:https://www.graph.cool/forum/t/how-do-i-add-an-array-of-objects-to-a-mutation-in-apollo-react/365/6?u=nilan

関連する問題