Skip to main content

GraphQLSchema

Schema Definition

A Schema is created by supplying the root types of each type of operation, query and mutation (optional). A schema definition is then supplied to the validator and executor.

Example:

const MyAppSchema = new GraphQLSchema({
query: MyAppQueryRootType,
mutation: MyAppMutationRootType,
})

Note: When the schema is constructed, by default only the types that are reachable by traversing the root types are included, other types must be explicitly referenced.

Example:

const characterInterface = new GraphQLInterfaceType({
name: 'Character',
...
});

const humanType = new GraphQLObjectType({
name: 'Human',
interfaces: [characterInterface],
...
});

const droidType = new GraphQLObjectType({
name: 'Droid',
interfaces: [characterInterface],
...
});

const schema = new GraphQLSchema({
query: new GraphQLObjectType({
name: 'Query',
fields: {
hero: { type: characterInterface, ... },
}
}),
...
// Since this schema references only the `Character` interface it's
// necessary to explicitly list the types that implement it if
// you want them to be included in the final schema.
types: [humanType, droidType],
})

Note: If an array of directives are provided to GraphQLSchema, that will be the exact list of directives represented and allowed. If directives is not provided then a default set of the specified directives (e.g. @include and @skip) will be used. If you wish to provide additional directives to these specified directives, you must explicitly declare them. Example:

const MyAppSchema = new GraphQLSchema({
...
directives: specifiedDirectives.concat([ myCustomDirective ]),
})

Index

Constructors

constructor

Properties

__validationErrors

__validationErrors: Maybe<readonly GraphQLError[]>

astNode

astNode: Maybe<SchemaDefinitionNode>

description

description: Maybe<string>

extensionASTNodes

extensionASTNodes: readonly SchemaExtensionNode[]

extensions

extensions: Readonly<GraphQLSchemaExtensions>

Accessors

[toStringTag]

  • get [toStringTag](): string
  • Returns string

Methods

getDirective

getDirectives

getField

  • This method looks up the field on the given type definition. It has special casing for the three introspection fields, __schema, __type and __typename.

    __typename is special because it can always be queried as a field, even in situations where no other fields are allowed, like on a Union.

    __schema and __type could get automatically added to the query type, but that would require mutating type definitions, which would cause issues.


    Parameters

    Returns undefined | GraphQLField<unknown, unknown, any>

getImplementations

getMutationType

getPossibleTypes

getQueryType

getRootType

getSubscriptionType

getType

getTypeMap

  • getTypeMap(): TypeMap
  • Returns TypeMap

isSubType

toConfig

  • toConfig(): GraphQLSchemaNormalizedConfig
  • Returns GraphQLSchemaNormalizedConfig