簡體   English   中英

如何在GraphQl中使用graphql-type-json包

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM