寻找在loopback4中实现事务管理的帮助。使用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是我想还原在no2行插入的数据。
如果我在DB中执行下面的代码,它会工作得很好。记录正在回滚。
BEGIN TRANSACTION
INSERT into addresses(ADDRESS_CITY,ADDRESS_STATE) values('123','1234')
ROLLBACK但是一些how连接器不能正常工作。
我检查了数据库管理员,看起来我们没有使用上面的事务设置implicit_transactions。有人知道怎么打开implicit_transactions吗?
我实现事务的方式有什么问题吗?热心的帮助
发布于 2019-11-22 07:49:25
要对事务中的操作进行分组,您需要显式地将操作分配给事务。
这是official documentation of loopback4 transaction support
要在事务中执行创建、检索、更新和删除操作,请将事务对象添加到标准
create()、update()、deleteAll()(等等)方法的Options参数中。
在您的示例中,您需要执行以下操作:
const addressTransaction = await this.addressRepo.beginTransaction();
const address = await this.addressRepo.create(addressObj, { transaction: addressTransaction});
addressTransaction.rollback()https://stackoverflow.com/questions/58828196
复制相似问题