2016-10-27 3 views
0

ここは私のEventAttendeeオブジェクトです。graphQLのオブジェクトの変異

const EventAttendee = new GraphQLInputObjectType({ 
    name: 'EventAttendee', 
    fields:() => ({ 
    attendeeName: {type: GraphQLString}, 
    personalizedDateSelection: {type: new GraphQLInputObjectType()} 
    }) 
}); 

personalizedDateSelectionプロパティが動的一つであり、その特性は、現在知られていません。ですから、この場合、私はGraphQLInputObjectType()を与えました。

しかし、というエラーが表示されます。EventAttendee.personalizedDateSelectionフィールドタイプは出力タイプでなければなりません。

プロパティが不明なObjectTypeを定義するにはどうすればよいですか?

答えて

0

私はobjectTypeにあるようにEventAttendeepersonalizedDateSelectionプロパティを望んでいたが、私は事前にこれらのプロパティを知らないが、私はそれがオブジェクト型であることを確信しています。

これをGraphQLScalarTypeとして宣言するのが正しい方法でした。約GraphQLScalarTypeをチェックしてください。しかし、カスタムスカラー型を作成する必要があります。すべてのスカラー型は入力型にすることができます。ここに私の実装があります:

const PersonalizedDateSelection = new GraphQLScalarType({ 
    name: 'PersonalizedDateSelection', 
    serialize: value => { 
     return value; 
    }, 
    parseValue: value => { 
     return value; 
    }, 
    parseLiteral: ast => { 
     console.log("coming in parseLiteral"); 
     console.log(ast); 
     let value = {}; 
     if (ast.kind !== Kind.OBJECT) { 
     throw new GraphQLError("Query error: Can only parse object but got a: " + ast.kind, [ast]); 
     } 
     ast.fields.forEach(field => { 
     value[field.name.value] = parseJSONLiteral(field.value); 
     }); 

     return value; 
    } 
}); 
0

InputObjectTypeを定義し、ObjectTypeを定義したくないと思います。

あなたができることは今すぐ文字列としてpersonalizedDateSelectionを宣言し、その後、必要なときにカスタム入力オブジェクトを使用して、その内容を理解することです。 GraphQLInputObjectTypeは、の新しい入力オブジェクトタイプを定義するために使用されます。そのものではありません。です。

関連する問題