如果事务内的非sql函数失败,pg-promise事务会回滚吗?

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

我有一个用例,如果从数据库中删除用户,我需要从外部服务中删除该用户。如果这些操作中的任何一个失败,则应撤消整个删除操作。我在想是否可以这样做:


const removeUser = async (user) => {
  await db.tx(async tx => {
    await removeUserFromDB(tx, user)
    await removeUserFromExternalService(user)
  })
} 

在 pg-promise 文档中,事务文档说如果 tx 回调失败,事务将被回滚。即使对不使用 tx 上下文的外部服务的调用失败,这是否仍然成立?如果回调中的任何一个操作失败,则应回滚事务。

node.js typescript pg-promise
1个回答
0
投票

是的,因为错误来自于

tx
方法。你可以自己尝试一下,只需在方法中抛出一个错误并查看数据库,你的用户应该在那里。

© www.soinside.com 2019 - 2024. All rights reserved.