2017-02-20 15 views
3

GraphQLでJSONスカラー型を認識できません。GraphQlでgraphql-type-jsonパッケージを使用する方法

私はスキーマのJSON GraphQLスカラー型定義する[アポロドキュメント](http://dev.apollodata.com/tools/graphql-tools/scalars.html#Using-a-package)を、続い:

スキーマ:

const SchemaDefinition = ` 
    scalar JSON 
    schema { 
    query: Query 
    mutation: Mutation 
    } 
` 

export default [ 
    SchemaDefinition, 
    Query, 
    Mutation, 
    ... 
] 

試験タイプ:

const Test = ` 
    type Test { 
    bodyJson: JSON 
}` 

リゾルバ。

import GraphQLJSON from 'graphql-type-json' 

const QueryResolver = { 
    Query: { 
    viewer(root, args, ctx) { 
     return User.query() 
     .where('id', ctx.state.user) 
     .first() 
    } 
    } 
} 

const scalarJSON = { 
    JSON: GraphQLJSON 
} 

export default { 
    ...QueryResolver, 
    ...ViewerResolver, 
    ...scalarJSON 
    ... 
} 

私はPostgreSQLを使用していますが、私が照会している列(body_json)はデータ型がjsonbです。

私はストレートデシベル(私は照会するKnexを使用して)私はGraphQLから、このエラーメッセージが表示されますから値を返すとき、私は、GraphiQLを通じて私のスキーマをテストする場合は、次のタイプ\の値が「JSON \」期待

[オブジェクトのオブジェクト]私が最初に返された値にJSON.stringifyを使用する場合は

が、私はこのエラーを取得:しかし、受け取ったJSON \

「タイプ\の期待値を」「が、受け取った:{\」キーを\ ":\"テスト\ "}"

私が何をしているかについての提案 違う?

答えて

0

私は(コア「graphql」ライブラリからbuildSchema('...')を使用して)、テキストベースのスキーマでの作業カスタムスカラーを得ることができませんでしたが、私は(new GraphQLSchema(...)を使用して)最初からプログラムスキーマを建てたときにそれが働きました。

+0

さて、私はそれを見ていきます。ありがとうございました。私が何かを得るなら、ここで更新します。 – Telitos

1

私はリゾルバ

JSON: { 

__serialize(value) { 
    return GraphQLJSON.parseValue(value); 
} } 

に、このようなカスタムスカラーJSONを解決し、それは私のためにうまく働きました。私はそれがあなたを助けると思う

関連する問題