以前,可以扩展TypeORM存储库并将其直接注入服务,例如:
import { User } from './entities/user.entity';
import { EntityRepository, Repository } from 'typeorm';
@EntityRepository(User)
export class UsersRepo extends Repository<User> {
// my custom repo methods
}import { Injectable } from '@nestjs/common'
import { UsersRepo } from './users.repo';
@Injectable()
export class UsersService {
constructor(private readonly usersRepo: UsersRepo) {}
}但是自从3.0.0版TypeORM 不支持通过继承扩展的存储库。。
如何在NestJS 9(依赖于TypeORM 3.+)中实现这种行为?我想出的唯一解决方案是向服务层添加自定义方法。但我想保留所有与ORM相关的方法(查询、聚合等)。在存储库层。
发布于 2022-08-04 16:19:39
让我马上告诉您:我不知道这是否是一个推荐的解决方案,我不知道TypeORM的作者是否真的考虑过这种方法。但一分钟前我做的是:
@Injectable()
export class UserRepository extends Repository<UserEntity> {
constructor(
@InjectRepository(UserEntity)
repository: Repository<UserEntity>
) {
super(repository.target, repository.manager, repository.queryRunner);
}
}最棒的是:它奏效了:D
我用:"@nestjs/typeorm": "^9.0.0"只是为了让你知道。
我会继续检查它是否破坏任何东西,但就目前而言,似乎是一个很好的解决办法。
发布于 2022-07-14 06:52:50
希望对你有帮助。在我的UserServices里
constructor(
@InjectRepository(UserEntity)
private readonly repository: BaseRepository<UserEntity>,
) {}UserModule
@Module({
imports: [TypeOrmModule.forFeature([UserEntity])],
exports: [UserService],
providers: [UserService],
})
export class UserModule {}*注:BaseRepository来自typeorm-事务性-cls-钩式
发布于 2022-09-18 04:48:30
这个问题在这里得到了解决(类似于这里的其他答案,但更完整):如何使用TypeORM (MongoDB)在NestJS中创建自定义存储库?
不知道他们为什么反对@EntityRepository,因为这更复杂,但它有效
https://stackoverflow.com/questions/72957962
复制相似问题