生成 SDL Generating SDL

导读

警告

本章仅适用于代码优先方法。

要手动生成 GraphQL SDL 模式(即,无需运行应用程序、连接数据库、连接解析器等),请使用 GraphQLSchemaBuilderModule

ts
async function generateSchema() {
  const app = await NestFactory.create(GraphQLSchemaBuilderModule)
  await app.init()

  const gqlSchemaFactory = app.get(GraphQLSchemaFactory)
  const schema = await gqlSchemaFactory.create([RecipesResolver])
  console.log(printSchema(schema))
}
提示

GraphQLSchemaBuilderModuleGraphQLSchemaFactory@nestjs/graphql 包导入。printSchema 函数从 graphql 包导入。

用法

gqlSchemaFactory.create() 方法采用解析器类引用数组。例如:

ts
const schema = await gqlSchemaFactory.create([
  RecipesResolver,
  AuthorsResolver,
  PostsResolvers,
])

它还带有一个标量类数组作为第二个可选参数:

ts
const schema = await gqlSchemaFactory.create(
  [RecipesResolver, AuthorsResolver, PostsResolvers],
  [DurationScalar, DateScalar],
)

最后,您可以传递一个选项对象:

ts
const schema = await gqlSchemaFactory.create([RecipesResolver], {
  skipCheck: true,
  orphanedTypes: [],
})
  • skipCheck:忽略架构验证;布尔值,默认为 false
  • orphanedTypes:要生成的未明确引用(不是对象图的一部分)的类列表。通常,如果声明了某个类但未在图中引用,则会将其省略。属性值是类引用的数组。