GraphQL 支持三种类型的操作——查询、突变和订阅。单个模式必须支持查询,但其他两种类型是可选的。对于模式支持的每个操作,它定义一个类型作为该操作的根。我们将这三种类型称为根操作类型。按照惯例,我们通常将这些类型命名为和Query
,但它们也可以有任何其他名称。Mutation
Subscription
如果使用 SDL,我们指定与每个操作关联的类型,如下所示:
schema {
query SomeType
mutation SomeOtherType
}
如果您使用的是 Apollo Server,则上述步骤不是必需的,但可以覆盖 Apollo 提供的默认设置。
如果你使用的是普通的 GraphQL.js,那么根操作类型被定义为你的模式对象的一部分:
const schema = new GraphQLSchema({
query: SomeType,
mutation: SomeOtherType,
})
因为Query
orMutation
和任何其他对象类型一样,重要的是要记住,Query
like上getUsers
的字段仍然只是一个字段。通俗地说,我们将这些字段称为查询(突变根类型上的字段称为突变),但它们仍然只是字段。
但是,给定一个 GraphQLResolveInfo 对象,您可以识别一个字段属于哪种类型,您还可以识别三种根操作类型。所以你可以这样做:
const { parentType, schema } = info
const isQueryField = parentType === schema.getQueryType()