2016-11-16 24 views
4

私はGraphQLで作業を始めました。私のスキーマにも1つのリスト項目が含まれています。続きArrayをGraphQLの引数として渡す

は私のスキーマのコードです:

var userType = new graphql.GraphQLObjectType({ 
name: 'user', 
fields: function() { 
    return { 
    _id: { 
    type: graphql.GraphQLID 
    }, 
    name: { 
    type: graphql.GraphQLString 
    }, 
    age: { 
    type: graphql.GraphQLString 
    }, 
    degrees:[ 
    {type:graphql.GraphQLList} 
    ] 
} 
    } 
    }); 

、次のようにクエリは次のとおりです。

var QueryType = new graphql.GraphQLObjectType({ 
    name: 'Query', 
    fields:() => ({ 
    userArr: { 
     type: new graphql.GraphQLList(userType), 
     args:{ 
     degrees:{type:new graphql.GraphQLList(userType)} 
     }, 
    resolve: function(source, args) { 
     console.log(args); 
     resolve(args); 
     } 
    } 
}) 
}) 

私はこのエラーを得ました。 enter image description here

基本的に私はクライアントのgraphqlクエリから配列を投稿する必要があり、それに応じてクエリを定義する必要があります。 私はこの問題に関して何か助けを見つけることができないので、何か提案があります。

答えて

2

私は最近非常に似たようなことをしました。 入力引数は、出力データを返信するときと同じタイプのシステムに保持する必要はありません。だからあなたのargは単に文字列やオブジェクトのリスト、あるいはあなたが送りたい標準のタイプのリストを受け入れるだけです。

この場合、文字列のリスト(配列)を受け入れるように更新しました。

var QueryType = new graphql.GraphQLObjectType({ 
    name: 'Query', 
    fields:() => ({ 
    userArr: { 
     type: new graphql.GraphQLList(userType), 
     args:{ 
     degrees:{type:new graphql.GraphQLList(graphql.GraphQLString)} 
     }, 
    resolve: function(source, args) { 
     console.log(args); 
     resolve(args); 
     } 
    } 
}) 
}) 

また、私はあなたのユーザータイプに気づきました。あなたは度がアレイカッコで囲まれています。 度の入力引数と同様に、文字列の配列を出力します。

degrees:{ 
    type:new graphql.GraphQLList(graphql.GraphQLString) 
    } 

ハッピーコーディング!

+0

を定義する必要があります私も、今ではこのエラーを与えて、これを試してみました。 ** user.degreesフィールドタイプは出力タイプでなければなりませんが、未定義です** ** –

+0

あなたはuserTypeのコードが正しいかどうかを確認できますか? –

+0

Gotcha、userTypeを投稿できますか?元の投稿を編集し、大きなものであればgithub gist code snippitを投稿してください。 – Justin

0

GraphQLObjectTypeは有効な入力タイプではありません。

は、「入力タイプは、他のオブジェクト、基本的なスカラー型、リスト型、およびその他の入力タイプのフィールドを持つことができません。」

Mutations and Input Typesを参照してください。 GraphQLStringがスカラー

degrees:{ 
    type:new graphql.GraphQLList(graphql.GraphQLString) 
} 

あるので

あなたは上記の提案を使用することができそうでない場合、あなたはGraphQLInputObjectType

const userInputType = new GraphQLInputObjectType({ 
    name: 'userInput', 
    fields: { /* put your fields here */ } 
}); 
/* some code in between */ 

degrees:{ 
    type:new graphql.GraphQLList(userInputType) 
} 
関連する問題