首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在TypeORM 9中扩展NestJS存储库(TypeORM 3.+)

如何在TypeORM 9中扩展NestJS存储库(TypeORM 3.+)
EN

Stack Overflow用户
提问于 2022-07-12 20:20:04
回答 3查看 1.9K关注 0票数 4

以前,可以扩展TypeORM存储库并将其直接注入服务,例如:

代码语言:javascript
复制
import { User } from './entities/user.entity';
import { EntityRepository, Repository } from 'typeorm';

@EntityRepository(User)
export class UsersRepo extends Repository<User> {
  // my custom repo methods
}
代码语言:javascript
复制
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相关的方法(查询、聚合等)。在存储库层。

EN

回答 3

Stack Overflow用户

发布于 2022-08-04 16:19:39

让我马上告诉您:我不知道这是否是一个推荐的解决方案,我不知道TypeORM的作者是否真的考虑过这种方法。但一分钟前我做的是:

代码语言:javascript
复制
@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"只是为了让你知道。

我会继续检查它是否破坏任何东西,但就目前而言,似乎是一个很好的解决办法。

票数 4
EN

Stack Overflow用户

发布于 2022-07-14 06:52:50

希望对你有帮助。在我的UserServices

代码语言:javascript
复制
constructor(
    @InjectRepository(UserEntity)
    private readonly repository: BaseRepository<UserEntity>,
) {}

UserModule

代码语言:javascript
复制
@Module({
  imports: [TypeOrmModule.forFeature([UserEntity])],
  exports: [UserService],
  providers: [UserService],
})
export class UserModule {}

*注:BaseRepository来自typeorm-事务性-cls-钩式

票数 0
EN

Stack Overflow用户

发布于 2022-09-18 04:48:30

这个问题在这里得到了解决(类似于这里的其他答案,但更完整):如何使用TypeORM (MongoDB)在NestJS中创建自定义存储库?

不知道他们为什么反对@EntityRepository,因为这更复杂,但它有效

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72957962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档