我正在使用Nest.js + TypeORM,在尝试向服务类添加继承时遇到了障碍。
我想拥有一个扩展自基本服务类的User服务类,并继承它具有的所有方法。
这就是我所做的:
export class BaseService<T> {
private repo;
constructor(repo: Repository<T>){
this.repo = repo;
}
async findAll(opts?): Promise<T[]> {
return this.repo.find(opts);
}
......
}
然后在我的用户服务上:
export class UserService extends BaseService<User> {
constructor(
@InjectRepository(User)
private userRepository: Repository<User>,
private readonly mailerService: MailerService,
) {
super(userRepository);
}
}
这在我只需要Service类中的单个存储库的情况下很好用,但是一旦我需要更多诸如productRepository的存储库,就可以看到,由于构造函数被硬编码为接受单个存储库,因此它将失败。
我似乎无法弄清楚实现这种目标的最优雅的方法是什么。
有人知道吗?