使用Apex检索数据
您在上一个项目中构建的Node.js应用程序运行SOQL查询,以从Salesforce平台检索会话列表。为了在Salesforce上检索该数据,您需要将Node.js后端逻辑转换为Apex代码。Apex是一种强类型的,面向对象的编程语言,它使开发人员可以结合对API的调用在Salesforce服务器上执行流和事务控制语句。
在此步骤中,您将编写一个Apex控制器,该控制器执行SOQL查询并将其公开为可以由您的组件调用的端点。
创建一个Apex控制器
-
- 在VS Code中,右键单击该
classes
文件夹,然后单击SFDX:Create Apex Class。 - 输入名称
SessionController
。 - 如果VS Code询问,请选择
force-app/main/default/classes
作为要添加SessionController.cls
到的目录。 - 在新打开的文件中,将默认代码替换为以下代码。
- 在VS Code中,右键单击该
该@AuraEnabled(cacheable=true)
声明将方法公开为端点,以便您的组件可以调用它们。它还支持对方法返回的数据进行客户端缓存。您在此处编写的代码比其Node.js等效代码短,因为您不必担心身份验证或异步运行查询。
- 保存
SessionController.cls
。
使用电线检索数据
现在我们有了端点,让我们替换模拟数据实现,并使用Wire Service用真实数据检索会话记录。此服务是Salesforce平台上的特殊实现,它使用声明性方法提供了优化的读取操作和客户端缓存。让我们看看如何构建它。
-
- 打开
sessionList.js
。 - 用以下代码替换前两行中的导入代码。
- 打开
这将导入从您的Apex方法自动生成的电线适配器。
-
- 在下面添加以下代码
sessions = [];
- 在下面添加以下代码
电线使用getSessions
映射到我们的Apex端点的适配器。使用searchKey
映射到searchKey
属性的参数调用导线。请注意,参数值以带有$
前缀的字符串形式传递。这意味着此参数是反应性的:每次searchKey
更改时都会调用电线。
-
- 删除
connectedCallback
功能。 - 用
handleSearchKeyInput
以下代码替换该函数。
- 删除
不再在客户端执行过滤。searchKey
现在将其传递到线路,以便Apex返回已过滤的会话列表。您正在searchKey
通过对更新应用300毫秒的延迟来取消更新属性。这是为了避免大量的Apex方法调用。
-
- 将该
handleSessionClick
函数替换为:
- 将该
现在,您可以使用会话记录ID而不是会话列表索引来导航到会话详细信息页面。
-
- 保存
sessionList.js
。 - 打开
sessionList.html
。 - 用以下代码替换文件内容。
- 保存
模板结构基本保持不变,但是现在您使用Salesforce记录字段名称。就像您之前在Node.js后端中所做的那样,这省去了用JavaScript映射字段名称的工作。在真实的项目中,您将直接在组件模板中使用Salesforce字段名称。
-
- 保存
sessionList.html.
- 打开
sessionDetails.js.
- 将文件内容替换为:
- 保存
就像for一样sessionList
,您将getSession
Apex方法连接到session
属性。您将sessionId
公共属性作为反应性参数传递给getSession
。
-
- 保存
sessionDetails.js
。 - 打开
sessionDetails.html
。 - 将文件内容替换为:
- 保存
-
- 保存
sessionDetails.html
。 - 打开
speakerCard.html
。 - 用以下代码替换文件内容。
- 保存
- 保存
speakerCard.html
。 - 通过右键单击
force-app
文件夹并单击SFDX:将源部署到组织来重新部署组件。
项目总结
恭喜你!您已成功转换了Lightning Web Component开源应用程序并将其部署在Salesforce平台上。
您刚刚了解了Salesforce平台提供的强大声明功能,从而减少了构建应用程序所需实现的代码量。查看其他许多Lightning Web Component项目和模块,以了解有关使您更快地构建现代应用程序的技术的更多信息。