首页 > 解决方案 > this.connection.getMetadata 不是函数

问题描述

我有一个基本的 graphql 解析器,如下所示:

import { ClassType, Resolver, Query, UseMiddleware, Mutation, Arg } from 'type-graphql';
import { InjectRepository, OrmManager } from 'typeorm-typedi-extensions';
import { EntityManager } from 'typeorm';
import 'reflect-metadata';
// import { Repository } from 'typeorm';

function baseResolver<
T extends ClassType,
X extends ClassType,
P extends ClassType
>(
    suffix: string,
    returnType: T,
    inputType: X,
    repository: any,
    updateType?: P
): any {
  @Resolver({ isAbstract: true })
    abstract class BaseResolver {
    protected repo: any;

    constructor(@OrmManager() protected entityManager: EntityManager) {
      this.repo = entityManager.getCustomRepository(repository);
    }

    @Query(() => [returnType], { name: `getAll${suffix}` })
    async getAll(): Promise<T[]> {
      return this.repo.find();
    }

    @Mutation(() => returnType, { name: `create${suffix}` })
    async create(@Arg('data', () => inputType) data: any): Promise<T> {
      const result = this.repo.create(data).save();
      return result;
    }

    @Mutation(() => Boolean, { name: `update${suffix}` })
    async update(@Arg('data', () => updateType) data: any) {
      await this.repo.update(data.id, data);
      return true;
    }

    @Mutation(() => Boolean, { name: `delete${suffix}` })
    async delete(@Arg('id') id: string) {
      await this.repo.softDelete(id);
    }
  }

  return BaseResolver;
}

export default baseResolver;

然后我在其他后代解析器中扩展解析器。当我尝试运行它时,我收到以下错误(由构造函数抛出):

 "TypeError: this.connection.getMetadata is not a function",

有人能帮忙吗?这段代码可能有什么问题?

标签: typescriptdependency-injectiontypeormtypegraphqltypeorm-datamapper

解决方案


推荐阅读