跳到主要内容
目录

生成 SDL

注意

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

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

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()方法接受一个解析器类引用数组。例如:

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

它还接受一个第二个可选参数,其中包含标量类的数组:

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

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

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