Cómo usar el paquete graphql-type-json con GraphQl
No puedo hacer que GraphQL reconozca el tipo escalar JSON.
Seguí los [documentos de Apolo] (http://dev.apollodata.com/tools/graphql-tools/scalars.html#Using-a-package) para definir un tipo escalar JSON GraphQL para mi esquema:
Esquema:
const SchemaDefinition = `
scalar JSON
schema {
query: Query
mutation: Mutation
}
`
export default [
SchemaDefinition,
Query,
Mutation,
...
]
Tipo de prueba:
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
...
}
Estoy usando PostgreSQL y la columna que estoy consultando (body_json) es del tipo de datos jsonb.
Si pruebo mi esquema a través de GraphiQL, cuando devuelvo el valor directamente de la base de datos (uso Knex para consultar) obtengo este mensaje de error de GraphQL:
Se esperaba un valor de tipo \ "JSON \" pero se recibió: [objeto Objeto]
Si uso JSON.stringify primero en el valor devuelto, obtengo este error:
"Se esperaba un valor de tipo \" JSON \ "pero se recibió: {\" key \ ": \" test \ "}"
¿Alguna sugerencia de lo que podría estar haciendo mal?