0

我创建了一个自定义对象。使用 LWC 组件,我尝试创建一个记录,但是当尝试从 apex 保存它时,只打印 ID 而不是名称。我不明白为什么只打印 ID 而不是名称。

有人可以帮我吗?将是可观的。

LWC 组件

import { LightningElement, track, api } from 'lwc';
import { ShowToastEvent } from 'lightning/platformShowToastEvent';
import insertDe from '@salesforce/apex/insertEvent.insertDe';
import Detail_OBJECT from '@salesforce/schema/Detail__c';

export default class insertEvent extends LightningElement {
  // @api childName;
  @track conRecord = Detail_OBJECT;

  handleChildNameChange(event) {
    this.conRecord.childName = event.target.value;
  }

  createRec() {
    insertDe({
        de: this.conRecord
    })
    .then(result => {
      // Clear the user enter values
      this.conRecord = {};

      // Show success messsage
      this.dispatchEvent(new ShowToastEvent({
        title: 'Success!!',
        message: 'Contact Created Successfully!!',
        variant: 'success'
      }), );
    })
    .catch(error => {
      this.error = error.message;
    });
  }
}
<template>
  <lightning-card title="Create Contact Record">
    <template if:true={conRecord}>
      <div class="slds-m-around--xx-large">
        <div class="container-fluid">
          <div class="form-group">
            <lightning-input 
              label="Child Name"
              name="childName"
              type="text"
              value={conRecord.childName}
              onchange={handleChildNameChange}
            ></lightning-input>
          </div>
        </div>
        <br />
        <lightning-button label="Submit" onclick={createRec} variant="brand"></lightning-button>
      </div>
    </template>
  </lightning-card>
</template>

顶点代码

public with sharing class insertEvent {
  @AuraEnabled
  public static void insertDe(Detail__c de) {
    try {
      insert de;
    } catch (Exception e) {
      System.debug('--->'+e);
    }
  }
}
4

2 回答 2

0

如果您使用的是 LWC 组件,那么我建议您也使用Lightning Data Service

为了回答您的具体问题,插入 DML 后,仅Id返回该字段。如果您需要其他字段,则需要运行查询。这是因为触发器/工作流/流程构建器可以更改某些字段值。

于 2020-09-10T08:40:20.757 回答
0

我的建议是,如果您想直接从 LWC 组件插入记录,您应该使用Lightning Data Service。但是您需要执行一些自定义代码或从 apex 方法插入记录,那么您应该只传递数据 LWC 组件并在 apex 方法中创建对象然后插入它。

public static void insertDe(String name) {
    Detail__c obj = new Detail__c();
    obj.childName = name;
    try {
      insert obj;
    } catch (Exception e) {
      System.debug('--->'+e);
    }
  }

仅根据您的发布代码从 lwc 组件传递名称。

于 2021-04-24T10:14:35.110 回答