Хорошо, я посмотрю на это. Спасибо. Я обновлю здесь, если что-нибудь получу.
могу заставить GraphQL распознать скалярный тип JSON.
Я следовал за [документами Аполлона] (http://dev.apollodata.com/tools/graphql-tools/scalars.html#Using-a-package) чтобы определить скалярный тип JSON GraphQL для моей схемы:
Схема:
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.
Если я проверяю свою схему через GraphiQL, когда я возвращаю значение прямо из БД (я использую Knex для запроса), я получаю это сообщение об ошибке от GraphQL:
Ожидаемое значение типа \ "JSON \", но получено: [объект Object]
Если я сначала использую JSON.stringify для возвращаемого значения, я получаю эту ошибку:
"Ожидается значение типа \" JSON \ ", но получено: {\" key \ ": \" test \ "}"
Любое предложение относительно того, что я могу делать неправильно?