Я хочу использовать GraphQLDefinitionsFactory from '@nestjs/graphql'
для генерации интерфейсов TypeScript для меня на основе запросов с моего сервера Prisma и схемы graphql по индивидуальным запросам типа, мутации, ввода типа ...
Проблема : Схема около 6.000 - 7.000 строк занимает около 5 минут, что не проблема. Но со схемой около 30 000 строк это занимает более 1 часа, что слишком долго.
Я попробовал этот код:
import { GqlModuleOptions, GqlOptionsFactory } from '@nestjs/graphql';
import { Request } from 'express';
import { Injectable } from '@nestjs/common';
import { join } from 'path';
@Injectable()
export class GraphqlOptions implements GqlOptionsFactory {
createGqlOptions(): Promise<GqlModuleOptions> | GqlModuleOptions {
return {
context: ({ req, res }) => ({ req, res }),
typePaths: ['./src/*/*.graphql', './generated/*.graphql'], // path for gql schema files
installSubscriptionHandlers: true,
resolverValidationOptions: {
requireResolversForResolveType: false,
},
definitions: {
// will generate .ts types from gql schema files
path: join(process.cwd(), 'src/graphql.schema.generated.ts'),
outputAs: 'class',
},
debug: true,
introspection: true,
playground: true,
};
}
}
Затем я запускаю сервер из терминала:
[Nest] 8048 - 03/12/2020, 12:25:04 PM [InstanceLoader] AppModule dependencies initialized +723ms
[Nest] 8048 - 03/12/2020, 12:25:04 PM [InstanceLoader] PrismaModule dependencies initialized +2ms
[Nest] 8048 - 03/12/2020, 12:25:04 PM [InstanceLoader] UserModule dependencies initialized +4ms
[Nest] 8048 - 03/12/2020, 12:25:04 PM [InstanceLoader] GraphQLModule dependencies initialized +1ms
Второй способ:
import { GraphQLDefinitionsFactory } from '@nestjs/graphql';
import { join } from 'path';
const definitionsFactory = new GraphQLDefinitionsFactory();
definitionsFactory.generate({
typePaths: ['./src/*/*.graphql', './generated/*.graphql'], // path for gql schema files
path: join(process.cwd(), 'src/graphql.schema.ts'),
outputAs: 'class',
});
* команда запуска: * ts-node src/generate-typings.ts
по путеводителю из гнезда js: https://docs.nestjs.com/graphql/quick-start#schema -первое
Я не знаю, почему generate
занимает столько времени. Если ты знаешь, можешь мне это объяснить? Есть ли способ улучшить производительность generate
или может я ошибаюсь и мне нужно что-то исправить? Если вы хотите больше информации, пожалуйста, прокомментируйте ниже, я предоставлю. Большое вам спасибо.