Como usar o pacote graphql-type-json com o GraphQl
Não consigo que o GraphQL reconheça o tipo escalar JSON.
Eu segui os [apollo docs] (http://dev.apollodata.com/tools/graphql-tools/scalars.html#Using-a-package) para definir um tipo escalar JSON GraphQL para o meu esquema:
Esquema:
const SchemaDefinition = `
scalar JSON
schema {
query: Query
mutation: Mutation
}
`
export default [
SchemaDefinition,
Query,
Mutation,
...
]
Tipo de teste:
const Test = `
type Test {
bodyJson: JSON
}`
Resolver:
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
...
}
Estou usando o PostgreSQL e a coluna que estou consultando (body_json) é do tipo de dados jsonb.
Se eu testar meu esquema através do GraphiQL, quando retornar o valor diretamente do banco de dados (uso o Knex para consultar), recebo esta mensagem de erro do GraphQL:
Esperava um valor do tipo \ "JSON \", mas recebeu: [object Object]
Se eu usar JSON.stringify primeiro no valor retornado, eu recebo este erro:
"Esperava um valor do tipo \" JSON \ ", mas recebeu: {\" key \ ": \" test \ "}"
Alguma sugestão sobre o que eu poderia estar fazendo de errado?