Salesforce中能否通过LWC创建Event对象记录?对应报错如何解决
报错根因
你遇到的Object Event is not supported in UI API报错是Salesforce的标准限制:Event(事件)、Task(任务)这类活动对象不支持UI API,所有基于UI API实现的LWC功能包括createRecord、lightning-record-form、lightning-record-edit-form等都无法直接操作Event对象,所以你更换自定义UI后调用LDS方法依然会报错。
可行解决方案
最常用的实现方式是调用自定义Apex方法完成Event记录的插入:
步骤1:创建Apex控制器类
public class EventController { @AuraEnabled(cacheable=false) public static String createEvent(Event eventRecord){ try { insert eventRecord; return eventRecord.Id; } catch (Exception e) { throw new AuraHandledException('创建事件失败:' + e.getMessage()); } } }
步骤2:修改LWC JS代码,替换原来的createRecord逻辑
首先导入Apex方法:
import createEvent from '@salesforce/apex/EventController.createEvent';
替换原来的创建逻辑:
// 构造Event对象,注意不要手动传CreatedById const eventRecord = { OwnerId: user, WhoId: this.doctorName, StartDateTime: this.startDate, EndDateTime: this.endDate, Departments__c: this.depName, Doctor_Name__c: this.doctorName }; createEvent({eventRecord: eventRecord}) .then(eventId => { alert('Event created with Id: ' + eventId); }) .catch(error => { alert('Error: ' + JSON.stringify(error.body.message)); });
注意事项
- 不要手动给
CreatedById赋值,插入记录时系统会自动填充当前操作用户的ID,手动赋值会触发权限报错,除非你提前开启了审计字段的特殊设置权限 - 如果你不需要指定事件的负责人为其他用户,
OwnerId也可以省略不传,系统默认赋值为当前操作用户 - 实际业务场景中建议补充Apex层面的权限校验,避免越权操作问题
内容的提问来源于stack exchange,提问作者Ayushman Saini
相关产品推荐
相关产品推荐

