首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于处理混合类型的GraphQL架构

用于处理混合类型的GraphQL架构
EN

Stack Overflow用户
提问于 2015-12-12 05:37:23
回答 3查看 8.1K关注 0票数 8

我最近开始研究使用GraphQL请求动态数据配置的可能性。我首先想到的是GraphQL的强类型概念。

GraphQL模式有没有办法处理混合类型对象的数组?我将非常感谢你的解释,或者我可以阅读的参考资料。

我目前正在使用带有Node.js的GraphQL,但稍后的实现将在Java Container之外实现。所有数据都将从MongoDB中提取JSON。

EN

回答 3

Stack Overflow用户

发布于 2017-05-28 01:56:21

您要么必须让这些不同的类型实现相同的接口,要么让解析器返回联合,要么创建一个自定义标量来保存动态数据。

最干净的方法是第一种方法:如果您的结果对象可以是有限数量的类型,请定义这些类型,使它们实现相同的接口,并按接口键入您的解析器。这允许客户端根据实际类型有条件地选择子字段,并且您可以维护类型安全。

第二种方法有类似的限制:您需要提前知道可能的类型,但它们不必实现相同的接口。当可能的值彼此不相关并且具有诸如成功/失败之类的语义时,这是更可取的。

自定义标量方法是唯一一种不需要知道结果的可能类型的方法,即结果的结构可以是完全动态的。这种方法的Here's an implementation,称为JSON标量(即将任何JSON可序列化结构填充到标量值中)。这种方法最大的缺点是,它使得子选择变得不可能,因为整个值变成了一个大标量(即使它是一个复杂的对象)。

票数 4
EN

Stack Overflow用户

发布于 2019-01-26 06:49:48

如果数据完全是JSON,并且您更愿意按原样保存它们,请查看JSON scalar type。基本上,

代码语言:javascript
复制
import { GraphQLObjectType } from 'graphql';
import GraphQLJSON from 'graphql-type-json';

export default new GraphQLObjectType({
  name: 'MyType',
  fields: {
    myField: { type: GraphQLJSON },
  },
});
票数 2
EN

Stack Overflow用户

发布于 2016-03-30 15:27:51

我认为有可能创建一个符合需要的自定义/泛型类型。因此,它仍然是一个强类型数组,但类型将足够灵活,可以设置您需要的内容。

下面是一个自定义类型的示例:https://github.com/stylesuxx/graphql-custom-types

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34232966

复制
相关文章

相似问题

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