Salesforce LWC Database.setSavepoint

Salesforce LWC Database.setSavepoint

Javascript在这里承认新手和hacker,所以我怀疑这个问题很无知,学习经验。

我基本上是将旧的 Apex/Visualforce 页面转换为 LWC。 Apex 代码使用 Database.setSavepoint() 和 Database.rollback(),我不知道在 LWC 中如何完成类似的事情,或者即使它需要。

Google 什么也没提供,我知道这不是通过@wire 和@AuraEnabled 完成的。

迁移 VF apex 控制器的主要痛点(“常规控制器”,老派,它们正在为“viewstate”使用大量隐藏的 html 字段并且没有使用 @remoteaction对 Aura/LWC 服务器端控制器更加移动友好)是方法定义旁边的 static 关键字。您没有将整个控制器的“视图状态”神奇地传递给方法,您需要显式传递方法所需的参数。从 LWC/Aura 或(重新)查询它们。如果您知道此关键字的作用,就好像一切都被标记为 transient

无论如何,保存点和回滚必须在一个事务中发生(1 次交互,1 次按钮点击)。用户触发了一些东西,它要么成功要么失败。您无法保存游戏 ;) 并且 3 次交互之后会“明白了,回滚”。状态已写入数据库,船已起航。并且保存点无法序列化(您无法获取变量,将其传递给 VF/Aura/LWC 客户端,然后返回给服务器)。如果您要回传一些东西 - 这意味着交易快要结束了,无论如何都不需要它们。

所以它没有技术问题。问题是您的业务逻辑对回滚做了什么。这是一些时髦的“保存前验证”吗?尝试触发所有验证规则、触发器等并查看什么会爆炸的一些方法”?

LWC 应该不会在意,您应该能够很好地将此操作的结果传回。这是一个很好的问题,你是否仍然需要这个功能,但这是商业问题,而不是技术问题。