Вызов класса Apex из Lwc, только он сохраняется

Я создал один настраиваемый объект. Используя компонент LWC, я пытаюсь создать одну запись, но при попытке сохранить ее из апекса печатается только идентификатор, а не имя. Я не понимаю, почему печатается только 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);
    }
  }
}

person Priyanka Sarkar    schedule 05.09.2020    source источник
comment
‹Template› ‹заголовок-молнии = Создать запись контакта› ‹шаблон if: true = {conRecord}› ‹div class = slds-m-around - xx-large› ‹div class = container-fluid› ‹div class = form-group ›‹ lightning-input label = Имя ребенка name = childName type = текстовое значение = {conRecord.childName} onchange = {handleChildNameChange} ›‹/lightning-input› ‹/div ‹›/div›   -  person Priyanka Sarkar    schedule 05.09.2020
comment
‹Br /› ‹метка кнопки-молнии = Отправить onclick = {createRec} option = brand› ‹/lightning-button› ‹/div› ‹/template› ‹/lightning-card› ‹/template›   -  person Priyanka Sarkar    schedule 05.09.2020
comment
HTML-код прилагается   -  person Priyanka Sarkar    schedule 05.09.2020


Ответы (2)


Если вы используете компонент LWC, я предлагаю также использовать Lightning Data Service.

Чтобы ответить на вашу конкретную проблему, после вставки DML возвращается только поле Id. Если вам нужны другие поля, то вам нужно выполнить запрос. Это связано с тем, что триггер / рабочий процесс / построитель процессов может изменять какое-либо значение поля.

person Bartheleway    schedule 10.09.2020

Мое предложение, если вы хотите вставить запись непосредственно из компонента LWC, вы должны использовать Lightning Data Service. Но вам нужно выполнить какой-то собственный код или вставить запись из метода вершины, тогда вы должны передать только компонент данных LWC и создать объект в методе вершины, а затем вставить его.

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 в соответствии с вашим кодом публикации.

person Jabir_Hstu    schedule 24.04.2021