как внедрить сервис при использовании наследования классов резолвера - PullRequest
0 голосов
/ 06 апреля 2019

Я пытаюсь использовать наследование классов резолвера в TypeGraphQL, работая с Nestjs, но не знаю, как внедрить PostService в BaseResolver

import { ClassType } from 'type-graphql';
import { Query, Resolver, Args } from '@nestjs/graphql';
import { UseGuards } from '@nestjs/common';
import { PostService } from './post.service';
import { GqlAuthGuard } from 'src/account/auth/auth.guard';

export const createPostBaseResolver = <T extends ClassType>(
  suffix: string,
  objectTypeCls: T,
) => {
  @Resolver(() => objectTypeCls, { isAbstract: true })
  abstract class PostBaseResolver {
    constructor(private readonly postService: PostService) {}

    @Query(() => objectTypeCls, { name: `${suffix}` })
    @UseGuards(GqlAuthGuard)
    async getPostById(@Args('id') id: number) {
      // here postService is undefined
      return await this.postService.get(id);
    }
  }
  return PostBaseResolver as any;
};
...