【问题标题】:graphqljs - Query root type must be providedgraphqljs - 必须提供查询根类型
【发布时间】:2019-06-16 17:39:16
【问题描述】:

如何解决此错误?对于这个特定的模式,我不需要任何查询(它们都是突变)。我不能通过null,如果我通过一个空的GraphQLObjectType,它会给我错误:

Type Query must define one or more fields.

【问题讨论】:

    标签: javascript graphql graphql-js


    【解决方案1】:

    如果你使用的是 Node.js express -

    您的架构应该同时具有根查询和根突变,尽管您没有任何查询解析器,但您仍然需要定义根查询。

    例如-

    type RootQuery {
    hello: String!
    }
    
    schema {
        query: RootQuery
        mutation: RootMutation
    }
    

    【讨论】:

      【解决方案2】:

      如果您正在使用graphql-tools(也可能是其他 SDL 工具),您可以使用以下命令指定空类型(例如 Query):

      type Query
      

      代替

      type Query {}
      

      如果您以编程方式构建架构,则必须添加虚拟查询,就像:

      new GraphQLObjectType({
        name: 'Query',
        fields: {
          _dummy: { type: graphql.GraphQLString }
        }
      })
      

      这是 SDL 的编程等效项:

      type Query {
        _dummy: String
      }
      

      【讨论】:

      • 即使您不需要它,您也需要指定 Query 有点奇怪。再等一会儿,我会将此标记为答案。
      • @A.Lau 将其标记为已接受是安全的。如果您检查spec,它特别说明“必须提供查询根操作类型并且必须是对象类型”。只有变异和订阅根操作类型是可选的。
      猜你喜欢
      • 2021-01-14
      • 2020-04-23
      • 2018-12-15
      • 2021-01-27
      • 2018-01-13
      • 2018-12-30
      • 2019-06-02
      • 2017-10-29
      • 2017-10-26
      相关资源
      最近更新 更多