Я пытаюсь передать recordId из LWC в класс APEX, чтобы отправить мою запись на утверждение. Однако это дает мне ошибку. Мои JS:

import { LightningElement, track, api, wire } from 'lwc';
import { getRecord, getFieldValue } from 'lightning/uiRecordApi';
import SubmitRequestToCloseCommitment from '@salesforce/apex/LWCMethods.SubmitRequestToCloseCommitment';

export default class LWCCloseCommitment extends LightningElement {
  @api recordId;

  @wire(getRecord, { recordId: '$recordId', fields })
  Commitment__c;

  //Some criteria & modal processing

  updateCommitment() {
    // Some code how to update the record
    //Submit for approval - APEX imperative
    SubmitRequestToCloseCommitment({ ComID: this.recordId })
  }
}

АПЕКС класс

public with sharing class LWCMethods {
  @AuraEnabled(cacheable=true)
  public static void SubmitRequestToCloseCommitment(string ComID){   
   System.debug('ID ' + ComID);
  //Some code to create an approval request
  }
}

Я получаю ошибку

[новое значение не может быть неопределенным. Имя наблюдаемого: MapWithFilterOnSubscribeBehaviorSubject <= DistinctUntilChanged <= RootObservable: lds.Apex::LWCMethods:SubmitRequestToCloseCommitment:false:{"ComID":"a0l1w000002ci9LAAQ"}, newValue: undefined]

enter image description here

Что мне не хватает? Заранее спасибо!

5
Kris Goncalves 28 Дек 2019 в 00:12
Afaik, любой апекс, связанный с утверждениями, вызывает DML, что не разрешено для кешируемых методов.
 – 
kurunve
27 Дек 2019 в 22:40
На этом этапе весь код, связанный с утверждением, комментируется, остается только отладка. Есть ли другой способ, как заставить запрос на утверждение от LWC?
 – 
Daria Lukiyan
27 Дек 2019 в 22:47

1 ответ

Я смог воспроизвести, и это было решено, когда метод Apex вернул что-то, как показано ниже:

public with sharing class LWCMethods {
  @AuraEnabled(cacheable=true)
  public static String SubmitRequestToCloseCommitment(string ComID){   
   System.debug('ID ' + ComID);
  //Some code to create an approval request
    return ComID;
  }
}

У меня нет ссылки на ссылку, но кажется, что методы, аннотированные @AuraEnabled(cacheable=true), должны что-то возвращать.

4
javanoob 28 Дек 2019 в 00:40