salesforce - Salesforce LWC 数据库.setSavepoint
问题描述
Javascript在这里承认了新手和黑客,所以我怀疑这个问题非常无知和学习经验。
我实质上是将旧的 Apex/Visualforce 页面转换为 LWC。Apex 代码使用 Database.setSavepoint() 和 Database.rollback(),我不知道如何在 LWC 中完成类似的事情,或者即使它需要。
谷歌什么也没提供,我知道这不是通过@wire 和@AuraEnabled 完成的。
解决方案
将 VF apex 控制器(“常规控制器”,oldschool,它们使用大量隐藏的 html 字段用于“viewstate”,并且过去不太@remoteaction
适合移动设备)迁移到 Aura/LWC 服务器端的主要痛点controllers 是static
方法定义旁边的关键字。您没有将整个控制器的“视图状态”神奇地传递给方法,您需要显式传递方法所需的参数。从 LWC/Aura 或(重新)查询它们。transient
如果您知道此关键字的作用,就好像所有内容都被标记了。
无论如何,保存点和回滚都必须发生在一个事务中(1 个交互,1 个按钮单击)。用户触发了某些东西,它要么成功要么失败。您无法保存游戏;)和 3 次交互之后会“抓住,回滚”。状态已写入数据库,船已航行。并且保存点无法序列化(您无法获取变量,将其传递给 VF/Aura/LWC 客户端,然后再传回服务器)。如果您将某些东西传回 - 这意味着交易几乎结束了,无论如何都不需要它们。
因此,它不存在技术问题。问题是您的业务逻辑对回滚做了什么。这是一些时髦的“保存前验证”吗?有什么方法可以尝试触发所有验证规则、触发器等,看看会发生什么”?
LWC 不应该关心,你应该能够很好地传递这个操作的结果。这是一个很好的问题,您是否仍然需要此功能,但这是商业问题,而不是技术问题。
推荐阅读
- python - Python根据日期对列表进行部分排序
- azure - 如何查看容器的 Azure Web 应用程序的日志?
- python - 扩展时在列中向后搜索的数据框快速方法
- string - Matlab过滤两个字符串以使它们相等
- reactjs - Gatsby 无法处理来自 markdown 文件的图像
- javascript - Onclick 延迟我的 css 代码,如何不删除我的 css 代码?
- java - 如何输入超过 10 个整数?
- python - ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()。为什么会这样?
- c - 如何在 Geany 中调试 C?
- python-3.x - 使用 for 循环、if 循环和 zip 迭代 panda 数据帧和列表