refactoring - GraphQL 中的多个 rootQuery 对象

标签 refactoring graphql graphql-js

有没有一种方法可以通过创建多个 rootQuery 对象并将它们组合到模式中来重构 rootQuery 对象?

所以现在我们有一个充满多个根的 rootQuery,然后我们创建一个模式说我们有一个根查询。我们写的是

var schema = new GraphQLSchema({
 query: RootQuery
})

我想要的样子

var schema = new GraphQLSchema({
 query: [RootQuery1, RootQuery2]
})

有没有办法在 GraphQL 中做到这一点?它将有助于重构。

最佳答案

它不能,GraphQLSchema queryType 只接受 GraphQLObjectTypeRootQuery,不能是有多个GraphQLObjectType

的ArrayType

你所有的类型都应该在主要的 queryType 中声明,它是 RootQuery

下面是GraphQLSchema的源码

https://github.com/graphql/graphql-js/blob/master/src/type/schema.js#L58

export class GraphQLSchema {
  _queryType: GraphQLObjectType; // accepts GraphQLObjectType not array
  _mutationType: ?GraphQLObjectType;
  _subscriptionType: ?GraphQLObjectType;
  _directives: Array<GraphQLDirective>;
  _typeMap: TypeMap;
  _implementations: { [interfaceName: string]: Array<GraphQLObjectType> };
  _possibleTypeMap: ?{
    [abstractName: string]: { [possibleName: string]: boolean }
  };

关于refactoring - GraphQL 中的多个 rootQuery 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42645193/

相关文章:

graphql - 在 Relay.js 中, `Client Mutation Identifier` 是什么?

amazon-web-services - 对象放大模式定义中未显示一对多关系

c# - 将泛型与 GraphType 结合使用

java - 如何使用 graphql-java 从请求 header 设置上下文

vue.js - 具有多个别名和 Apollo (Vue.js) 的 GraphQL 查询

javascript - 如何命名方法

javascript - graphql-tools 突变解析器的参数不是 v > 0.8.0 中的对象?

java - 如何从代码中重构全局变量

perl - 有什么好的工具可以重构 Perl web 代码吗?

javascript - 如何重构我的函数,使其适用于多个 div?