如何在 typeorm 事务中使用服务方法

Ahm*_*han 5 typeorm nestjs typeorm-activerecord

我已经阅读了 typeorm 中的事务。

@Transaction()
save(user: User, @TransactionRepository(User) userRepository: Repository<User>) {
    return userRepository.save(user);    
}
Run Code Online (Sandbox Code Playgroud)

我有一个带有多个模块和服务的 nestjs 应用程序。我需要做的是在事务中调用不同的服务方法。但@TransactionRepository为我提供了repository. 那么我应该怎么做才能实现在其中调用多个服务方法的事务。喜欢

class Module3Service{
    constructor(
    private readonly module1service: Moudle1Service,
    private readonly module2service: Module2Service
    ){}

    @Transaction()
    save() {
        this.module1service.create()
        this.module2service.create()
    }
Run Code Online (Sandbox Code Playgroud)

我不知道如何实现它。如果我错了,可能的解决方案是更改模块服务依赖项(module1service 依赖项 => module1repositoroy)以更改为我们从@TransactionRepository(Module1Enity) module1repository: Repository<Module1Entity>tranction 方法内部获得的新存储库实例,如果我错了,也请纠正我。或任何其他解决方案请帮助

我正在使用 postgres

kam*_*ilg 0

在单元测试期间你会遇到麻烦@Transaction()

我会推荐Typeorm 的管理器 getManager().transaction( () => { ... } ) ,它不需要特定的存储库。在提供的回调中执行的所有内容都.transaction将在单个事务下。