typescript - 带有 Typeorm 事务的 Nestjs 存储库模式
问题描述
我一直在使用带有存储库模式的 Nestjs,所以我将存储库注入到服务中,如下所示:
@Injectable()
export class FooService {
constructor(
@InjectRepository(Foo)
private fooRepository: Repository<Foo>,
) {}
}
我一直在使用存储库,如下所示:
async createFoo(createFooDto: CreateFooDto) {
const foo = new Foo();
foo.Something = createFooDto.Something;
foo.Anything = createFooDto.Anything;
await this.fooRepository.save(foo);
}
现在,如果我想使用事务,文档建议通过在服务上注入 Connection 对象来实现。我的问题是:我可以将上面的构造函数更改为:
@Injectable()
export class FooService {
constructor(
@InjectRepository(Foo)
private fooRepository: Repository<Foo>,
@InjectConnection()
private connection: Connection
) {}
}
在这种情况下,大多数方法将使用 fooRepository 并且一些需要事务的方法将使用连接对象 (connection.manager.transaction(() => {...}) 或 connection.createQueryRunner() 。 ..)
或者我应该只注入连接并始终从 connection.manager 创建 fooRepository 吗?在我的班级服务上同时拥有一个存储库和一个连接有什么问题?有问题吗?
解决方案
推荐阅读
- java - JCodeModel 创建注解
- python - 从 Kbuild 文件调用 Python 脚本
- mysql - 需要针对引用列具有不同数据类型的 SQL 查询的解决方案
- python - 在 Pandas 中连接两个 dfs
- postgresql - PostgreSQL 10:如何使用约束和默认值 -1 添加唯一性
- perl - 使用 Perl 从日志文件中逐行提取两个符号之间的数据
- python-2.7 - 如何在鼠标移动事件中过滤事件
- c# - iTextSharp 不显示阿拉伯文本加号
- android - 如果在 Kotlin 中删除额外的
- angular - 在 observable 中的对象数组上使用 Array.filter