用途:在 React Web 应用中实现 Salesforce 记录创建功能,适用于自定义对象或标准对象(如 Lead),并处理创建响应中的记录 ID 提取与部署错误排查。
主要能力:使用 @salesforce/webapp-experimental/api 的 createRecord(objectApiName, fields) 创建记录,返回结果对象;支持列表与创建功能配合 GraphQL 查询及自动列表刷新。创建响应不总是 { id: string },需兼容两种形态:优先取 result.id(字符串),否则读取 result.fields.Id.value。示例辅助函数: function getRecordIdFromResponse(result: Record<string, unknown>): string { const id = typeof result.id === "string" ? result.id : (result.fields as Record<string, { value?: string }> | undefined)?.Id?.value; if (!id) throw new Error("Create succeeded but no record id returned"); return id; }
使用方式:只发送组织中已存在的字段,否则可能返回 POST body 解析错误(如 "Field X does not exist")。自定义对象需先通过 SFDX/CLI 或元数据 API 部署对象及字段。若需捕获尚无自定义字段的数据,可存入长文本区(如 Employment_Info__c)作为 JSON 或行文本 blob。自定义对象在项目元数据中定义(如 objects/Application__c/、fields/*.field-meta.xml),应用中构建仅含 API 名称与值的 fields 对象。标准对象使用标准字段 API 名称,如 FirstName、LastName、Email、Company、Phone、Description、LeadSource 等;LeadSource 可区分来源。Contact Us 转 Lead 时可将主题映射到 Company、消息映射到 Description;Newsletter 注册可设 Email 并用占位 LastName 与 Company 保证有效。
结构建议:自定义对象创建放在 src/api/applicationApi.ts 的 createApplicationRecord(input);标准对象创建放在 src/api/leadApi.ts 的 createContactUsLead(input)、createNewsletterLead(email);表单 UI 收集数据并调用这些 API,显示成功/错误并可重定向或重置。
限制与错误:"Field X does not exist" 需移除该字段或部署字段;"Create succeeded but no record id returned" 使用上述 ID 提取模式;验证错误需返回并显示 API 错误信息,修正表单中的必填或无效值。验证时先部署对象/字段,运行创建流程确认记录出现在组织中,UI 显示成功及新 ID;先用最小必填字段测试,再添加可选或 blob 字段。