Loopback4 DefaultTransactionalRepository不起作用

问题描述 投票:0回答:1

[寻求帮助以在Loopback中实施事务管理4。使用ms-sql数据库和loopback-connector-mssql作为连接器。

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

下面是我正在控制器内部编写的代码。

 1. const addressTransaction = await this.addressRepo.beginTransaction();
 2. const address = await this.addressRepo.create(addressObj); 
 3. addressTransaction.rollback()

问题是,我在第2行创建的记录在第3行之后没有恢复,也没有错误。我也在第1行获得了addressTransaction对象,以上3行只是一个示例。 moto是我要还原回在第2行插入的数据。

如果我将下面的代码执行到数据库中,它的工作就很好了。记录正在回滚。

BEGIN TRANSACTION
INSERT into addresses(ADDRESS_CITY,ADDRESS_STATE) values('123','1234')
ROLLBACK

但是有些连接器无法正常工作。

我已与DBA核对过,看来我们没有在上述交易中设置隐式事务。有谁知道如何设置implicit_transactions。

我执行交易方式的任何问题?请帮助

loopbackjs loopback loopback4
1个回答
0
投票

要在事务中对操作进行分组,您需要明确地将操作分配给事务。

这里是official documentation of loopback4 transaction support

要在其中执行创建,检索,更新和删除操作交易,将交易对象添加到的Options参数标准create()create()update()(依此类推)方法。

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

update()
© www.soinside.com 2019 - 2024. All rights reserved.