GraphQL Blackbox /“任何”类型?

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



慕尼黑8549860
浏览 413回答 3
3回答

慕村9548890

我选择了一个更紧凑的解决方案: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    }  }})然后我的解析器看起来像:{  Object: ObjectScalarType,  RootQuery: ...  RootMutation: ...}和我的.gql样子:scalar Objecttype Foo {  id: ID!  values: Object!}

慕的地8271018

我提出了一个中间立场的解决方案。我没有尝试将这种复杂性推到GraphQL上,而是选择仅使用String类型并JSON.stringify在将其设置为字段之前对数据进行查询。所以一切都变得字符串化了,后来在我的应用程序中,当我需要使用此字段时,我JSON.parse得到的结果是返回所需的对象/数组/布尔值/等。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript