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
.
如何解决此错误?对于这个特定的模式,我不需要任何查询(它们都是突变)。我不能通过 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
.