首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Loopback4 DefaultTransactionalRepository不工作

Loopback4 DefaultTransactionalRepository不工作
EN

Stack Overflow用户
提问于 2019-11-13 07:28:37
回答 1查看 98关注 0票数 0

寻找在loopback4中实现事务管理的帮助。使用ms-sql数据库和loopback- connector -mssql作为连接器。

我正在使用DefaultTransactionalRepository扩展存储库。

下面是我在控制器中编写的代码。

代码语言:javascript
复制
 1. const addressTransaction = await this.addressRepo.beginTransaction();
 2. const address = await this.addressRepo.create(addressObj); 
 3. addressTransaction.rollback()

问题是,我在第2行创建的记录在第3行之后没有恢复,也没有错误。另外,我在第1行得到了addressTransaction对象。上面的3行只是一个例子。moto是我想还原在no2行插入的数据。

如果我在DB中执行下面的代码,它会工作得很好。记录正在回滚。

代码语言:javascript
复制
BEGIN TRANSACTION
INSERT into addresses(ADDRESS_CITY,ADDRESS_STATE) values('123','1234')
ROLLBACK

但是一些how连接器不能正常工作。

我检查了数据库管理员,看起来我们没有使用上面的事务设置implicit_transactions。有人知道怎么打开implicit_transactions吗?

我实现事务的方式有什么问题吗?热心的帮助

EN

回答 1

Stack Overflow用户

发布于 2019-11-22 07:49:25

要对事务中的操作进行分组,您需要显式地将操作分配给事务。

这是official documentation of loopback4 transaction support

要在事务中执行创建、检索、更新和删除操作,请将事务对象添加到标准create()update()deleteAll() (等等)方法的Options参数中。

在您的示例中,您需要执行以下操作:

代码语言:javascript
复制
const addressTransaction = await this.addressRepo.beginTransaction();
const address = await this.addressRepo.create(addressObj, { transaction: addressTransaction}); 
addressTransaction.rollback()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58828196

复制
相关文章

相似问题

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