2017-04-25 16 views
2

私はgraphql-jsを使ってNode ServerでGraphQLを使用していますが、GraphQLは非常に貴重な抽象化であることがわかっていますが、複雑な引数をGraphQLの突然変異に渡す

多くの場合、大きな構造化オブジェクトをGraphQLInputObjectTypeを使用してGraphQL突然変異の引数として渡す必要があります。これは大丈夫だと思うが、GraphQLは:(JSON表記の使用をサポートしていません。だから私はちょうどに対処するためのサーバーのため、JSONを含む文字列を送信してしまう。

const objectStr = JSON.stringify(object).replace(new RegExp("\"", "g"), "'") 

graphQLClient(`{ 
    user: updateUser(someDataObject: "${objectStr}") {...} 
}`) 

しかし、今、私はよGraphQLから全く恩恵を受けていない!

私は私がここで何か間違ったことをやっている感覚を持っている。突然変異に、たとえば、サインアップフォームデータを送信するGraphQLの方法は何ですか?

答えて

1

行うための最善の方法は、これは入力オブジェクトを使用することです

基本的には、次のようになります。

/* Query */ 
mutation Update($input: UpdateUserInput!) { 
    updateUser(input: $input) { 
     changedUser { 
      id 
      username 
     } 
    } 
} 

/* Variables (as JSON) */ 
{ 
    "input": { 
     "username": "[email protected]", 
     "password": "SuperSecretPassword" 
    } 
} 

あなたはこのようあなたのPOSTリクエストでペイロードのコンテンツ本体の中にそれを渡します:あなたはより深い説明をしたい場合は、あなたがあなたのAPIを構築を支援するScaphold's Docs for updating dataをチェックアウトすることができ

{ 
    "query": <GraphQL query from above as a string>, 
    "variables": <JSON object from above> 
} 

希望すると便利です。

+1

このソリューションの欠落部分は、UpdateUserInputを定義する場所と方法です。 – mhlavacka

関連する問題