我无法让 GraphQL 识别 JSON 标量类型。
我遵循了[apollo 文档](http://dev.apollodata.com/tools/graphql-tools/scalars.html#Using-a-package) 为我的架构定义 JSON GraphQL 标量类型:
Schema:
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 Object]
如果我首先对返回值使用 JSON.stringify,则会收到此错误:
“预期为 \"JSON\" 类型的值,但收到:{\"key\":\"test\"}"
关于我可能做错了什么有什么建议吗?