typescript - 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",
有人能帮忙吗?这段代码可能有什么问题?
解决方案
推荐阅读
- windows - InnoSetup - 使用不同选项多次安装同一产品
- python - 如何将文本文件中的行附加到python 3x中的多个列表
- sql - 在 Postgres 中使用表值参数调用函数
- jquery - 禁用/启用提交按钮的 jQuery 自定义插件
- ios - Swift 分段控制和 UITableView
- xml - IBMi (XMLTABLE) xml 中的 XML 解析问题
- php - FatalErrorException 在 null 上调用成员函数 except()
- java - ElasticSearch Java 高级 REST 客户端:过滤文档和/或查询
- typescript - 为什么在使用 Array.isArray 时类型推断会丢失?
- excel - 使用 VBA,您可以输入一个引用另一个具有动态名称的工作簿的公式吗?