[英]How to use graphql-type-json package with GraphQl
我無法讓GraphQL識別JSON標量類型。
我按照[apollo docs]( 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測試我的模式,當我直接從db返回值(我使用Knex查詢)時,我從GraphQL收到此錯誤消息:
期望值類型為“JSON”但收到:[object Object]
如果我首先在返回的值上使用JSON.stringify,我會收到此錯誤:
“期望值類型為”JSON“,但收到:{\\”key \\“:\\”test \\“}”
關於我可能做錯什么的任何建議?
我在解析器中解決了這樣的自定義標量JSON
JSON: {
__serialize(value) {
return GraphQLJSON.parseValue(value);
} }
它對我來說很好。 我認為它會對你有所幫助
我無法使用基於文本的模式使用自定義標量(使用來自核心“graphql”庫的buildSchema('...')
),但是當我從頭開始以編程方式構建模式時(使用new GraphQLSchema(...)
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.