graphqljs - 必须提供查询根类型

graphqljs - Query root type must be provided

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

Type Query must define one or more fields.

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

type Query

而不是

type Query {}

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

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

哪个是 SDL 的编程等效项:

type Query {
  _dummy: String
}

如果您正在使用 Node.js 表达 -

你的模式应该有根查询和根突变,虽然你没有任何查询解析器,但你仍然需要定义根查询。

例如-

type RootQuery {
hello: String!
}

schema {
    query: RootQuery
    mutation: RootMutation
}

如果您使用的是 express,您可以这样做:

const {GraphQLObjectType, GraphQLSchema, GraphQLString} = require("graphql")

const Schema = new GraphQLSchema({
    query: new GraphQLObjectType({
        name: "Query",
        fields: () => ({
            message: {
                type: GraphQLString,
                resolve: () => "Hello World"
            }
        })
    })
})

使用GraphQLObjectType。 属性 Query 应该小写为 query.