我最近开始研究使用GraphQL请求动态数据配置的可能性。我首先想到的是GraphQL的强类型概念。
GraphQL模式有没有办法处理混合类型对象的数组?我将非常感谢你的解释,或者我可以阅读的参考资料。
我目前正在使用带有Node.js的GraphQL,但稍后的实现将在Java Container之外实现。所有数据都将从MongoDB中提取JSON。
发布于 2017-05-28 01:56:21
您要么必须让这些不同的类型实现相同的接口,要么让解析器返回联合,要么创建一个自定义标量来保存动态数据。
最干净的方法是第一种方法:如果您的结果对象可以是有限数量的类型,请定义这些类型,使它们实现相同的接口,并按接口键入您的解析器。这允许客户端根据实际类型有条件地选择子字段,并且您可以维护类型安全。
第二种方法有类似的限制:您需要提前知道可能的类型,但它们不必实现相同的接口。当可能的值彼此不相关并且具有诸如成功/失败之类的语义时,这是更可取的。
自定义标量方法是唯一一种不需要知道结果的可能类型的方法,即结果的结构可以是完全动态的。这种方法的Here's an implementation,称为JSON标量(即将任何JSON可序列化结构填充到标量值中)。这种方法最大的缺点是,它使得子选择变得不可能,因为整个值变成了一个大标量(即使它是一个复杂的对象)。
发布于 2019-01-26 06:49:48
如果数据完全是JSON,并且您更愿意按原样保存它们,请查看JSON scalar type。基本上,
import { GraphQLObjectType } from 'graphql';
import GraphQLJSON from 'graphql-type-json';
export default new GraphQLObjectType({
name: 'MyType',
fields: {
myField: { type: GraphQLJSON },
},
});发布于 2016-03-30 15:27:51
我认为有可能创建一个符合需要的自定义/泛型类型。因此,它仍然是一个强类型数组,但类型将足够灵活,可以设置您需要的内容。
下面是一个自定义类型的示例:https://github.com/stylesuxx/graphql-custom-types
https://stackoverflow.com/questions/34232966
复制相似问题