我已经阅读了关于 typeorm 中的事务。
@Transaction()
save(user: User, @TransactionRepository(User) userRepository: Repository<User>) {
return userRepository.save(user);
}
我有一个带有多个模块和服务的nestjs 应用程序。我需要做的是在事务中调用不同的服务方法。但是
@TransactionRepository
为我提供 repository
.那么我应该怎么做才能实现在其中调用多个服务方法的事务。像class Module3Service{
constructor(
private readonly module1service: Moudle1Service,
private readonly module2service: Module2Service
){}
@Transaction()
save() {
this.module1service.create()
this.module2service.create()
}
我不知道如何实现它。如果我错了,还请纠正我,可能的解决方案是更改模块服务依赖项(module1service 依赖项 => module1repositoroy)以更改为我们从
@TransactionRepository(Module1Enity) module1repository: Repository<Module1Entity>
获得的新存储库实例里面的tranction方法。或任何其他解决方案请帮助我正在使用 postgres
最佳答案
如果我没有正确回答您的问题,您可以使用 @TransactionManager() entityManager?: EntityManager
并通过 entityManager
到服务
例如:
class Module3Service{
constructor(
private readonly module1service: Moudle1Service,
private readonly module2service: Module2Service
){}
@Transaction()
save(@TransactionManager() entityManager?: EntityManager) {
this.module1service.create(entityManager)
this.module2service.create(entityManager)
}
class Module1Service{
save(entityManager: EntityManager) {
entityManager.save()
}
class Module2Service{
save(entityManager: EntityManager) {
entityManager.save()
}
关于nestjs - 如何在 typeorm 事务中使用服务方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58691619/