本章仅适用于代码优先方法。
要手动生成 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))
}
GraphQLSchemaBuilderModule
和 GraphQLSchemaFactory
从 @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
:要生成的未明确引用(不是对象图的一部分)的类列表。通常,如果声明了某个类但未在图中引用,则会将其省略。属性值是类引用的数组。