全局配置
|
这是 GraphQL Library 7 版本的文档。对于长期支持 (LTS) 版本 5,请参考 GraphQL Library 5 LTS 版本。 |
通过模式配置,可以全局禁用特定类型的操作。若要单独设置操作,请参阅 类型配置。
例如,如果您想 一次性禁用所有顶层聚合操作,Neo4j GraphQL 库可通过使用 @query 的模式扩展提供此选项。
type Movie @node {
title: String
actors: [Actor!]! @relationship(type: "ACTED_IN", direction: IN)
}
type Actor @node {
name: String
movies: [Movie!]! @relationship(type: "ACTED_IN", direction: OUT)
}
extend schema @query(read: true, connection: true, aggregate: false)
此配置会为 Movie 和 Actor 类型禁用所有顶层聚合操作,同时仍然允许读取操作。
type Query {
moviesConnection(first: Int, after: String, where: MovieWhere, sort: [MovieSort!]): MoviesConnection!
movies(where: MovieWhere, limit: Int, offset: Int, sort: [MovieSort!]): [Movie!]!
actorsConnection(first: Int, after: String, where: ActorWhere, sort: [ActorSort!]): ActorsConnection!
actors(where: ActorWhere, limit: Int, offset: Int, sort: [ActorSort!]): [Actor!]!
}
type MoviesConnection {
edges: [MovieEdge!]!
totalCount: Int!
pageInfo: PageInfo!
}
type ActorsConnection {
edges: [ActorEdge!]!
totalCount: Int!
pageInfo: PageInfo!
}
无效的模式用法
同一 schema 配置指令不能同时应用于 schema 和对象。以下类型定义即为示例。
type Movie @node {
title: String
actors: [Actor!]! @relationship(type: "ACTED_IN", direction: IN)
}
type Actor @node @query(read: false, connection: false, aggregate: true) {
name: String
movies: [Movie!]! @relationship(type: "ACTED_IN", direction: OUT)
}
extend schema @query(read: true, aggregate: false)
此类配置会触发错误 “@query directive already defined at the schema location”。