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

标签 nestjs typeorm typeorm-activerecord

我已经阅读了关于 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/

相关文章:

database - 使用 typeORM 搜索早于日期的数据

node.js - TypeORM 无法将 cli 与配置一起使用

typescript - 如何将自定义标量导入 NestJs 中的 .graphql 文件?

javascript - TypeScript 中未找到存储库错误,当我通过 typeorm 连接到 MySQL 时遇到该错误

node.js - Mailgun-401禁止

mongodb - typeorm mongo 全文搜索 - 按 $meta : "textScore" 排序

typeorm-如何在 "many to many"表中添加额外的字段?

database - 如何从Typeorm中的连接实体中仅选择单个/多个字段

nestjs:如何在typeorm中删除带有前缀的redis缓存

node.js - 在 NestJS 中模拟多个 TypeORM 存储库