首页 > 解决方案 > Salesforce LWC 数据库.setSavepoint

问题描述

Javascript在这里承认了新手和黑客,所以我怀疑这个问题非常无知和学习经验。

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

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

标签: salesforcesalesforce-lightninglwc

解决方案


将 VF apex 控制器(“常规控制器”,oldschool,它们使用大量隐藏的 html 字段用于“viewstate”,并且过去不太@remoteaction适合移动设备)迁移到 Aura/LWC 服务器端的主要痛点controllers 是static方法定义旁边的关键字。您没有将整个控制器的“视图状态”神奇地传递给方法,您需要显式传递方法所需的参数。从 LWC/Aura 或(重新)查询它们。transient如果您知道此关键字的作用,就好像所有内容都被标记了。

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

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

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


推荐阅读