I have a Lightning Component controller doing the following:

  1. inserting a custom object Audit__c record via LightningDataService.
  2. on successful insert calls a server-side controller method, passing one String parameter, auditId.

The Server-Side controller then queries the database for an Audit__c record WHERE Id=: auditId. This query is returning 0 rows. I've validated that the string being passed to filter the query is indeed the correct Id of the newly created Audit__c record.

Why isn't the SOQL query picking up the new Audit__c record even when being fed the right Id (as String). Is there some sort of casting issue that is causing Apex not to match the String filter value to a record Id?

Client-Side Controller (1 & 2)

component.find("auditCreator").saveRecord(function(saveResult) {
    if (saveResult.state === "SUCCESS" || saveResult.state === "DRAFT") {
        // record is saved successfully
        var resultsToast = $A.get("e.force:showToast");
        resultsToast.setParams({
            "title": "Saved",
            "message": "The audit was successfully initiated."
        });
        resultsToast.fire();

        var action = component.get("c.createAuditObjects");
        action.setParams({ auditId : JSON.stringify(saveResult.recordId)});

Server-Side Controller

public class initAuditReview {
    @AuraEnabled
    public static void createAuditObjects(String auditId){
        // auditId present
        System.debug('auditId is '+auditId);
        Audit__c parentAudit = [SELECT Id, Name FROM Audit__c WHERE Id=: auditId];

Debug Log

debug log

Proof of record existence:
record page in salesforce

  • 1
    Hi Nicholas, well asked question! As far as formatting goes, please note you can simply put empty lines between paragraphs (or a paragraph and a list/code block/etc.). You can also end a line with two spaces to create a line break. And use 1. instead of 1) to get <ol> formatting. See also: Markdown Editing Help. – Adrian Larson Oct 19 at 7:35
up vote 5 down vote accepted

There is an issue with auditId. If you will check debug log you are getting Id as "a03f200000oVeZRAA0". So just remove Json.stringify from client-side controller:

    action.setParams({ auditId : saveResult.recordId});

Your Answer

 
discard

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.