首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >GraphQL Blackbox /“任何”类型?

GraphQL Blackbox /“任何”类型?
EN

Stack Overflow用户
提问于 2019-06-06 01:27:00
回答 2查看 0关注 0票数 0

是否可以指定GraphQL中的字段应该是黑盒子,类似于Flow具有“任何”类型的方式?我的架构中有一个字段应该能够接受任意值,可以是String,Boolean,Object,Array等。

EN

Stack Overflow用户

发布于 2019-06-06 10:42:59

@ mpen的答案很棒,但我选择了更紧凑的解决方案:

代码语言:javascript
复制
const { GraphQLScalarType } = require('graphql')
const { Kind } = require('graphql/language')

const ObjectScalarType = new GraphQLScalarType({
  name: 'Object',
  description: 'Arbitrary object',
  parseValue: (value) => {
    return typeof value === 'object' ? value
      : typeof value === 'string' ? JSON.parse(value)
      : null
  },
  serialize: (value) => {
    return typeof value === 'object' ? value
      : typeof value === 'string' ? JSON.parse(value)
      : null
  },
  parseLiteral: (ast) => {
    switch (ast.kind) {
      case Kind.STRING: return JSON.parse(ast.value)
      case Kind.OBJECT: throw new Error(`Not sure what to do with OBJECT for ObjectScalarType`)
      default: return null
    }
  }
})

然后我的解析器看起来像:

代码语言:javascript
复制
{
  Object: ObjectScalarType,
  RootQuery: ...
  RootMutation: ...
}

.gql看起来像:

代码语言:javascript
复制
scalar Object

type Foo {
  id: ID!
  values: Object!
}
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档