Update any record without using apex class in LWC

Update records using uiRecordApi in Lightning web components

Sometimes we need to update some fields after checking some conditions. It may be same record or some other records. for this we don't need to create apex class to do this. Salesforce does allow do this using uiRecordApi. 

1. Import getRecord, getFieldValue, updateRecord methods from uiRecordApi.
[import {getRecord, getFieldValue, updateRecord} from 'lightning/uiRecordApi';]

2. Call the getRecord method to get current records field values.
[const fields = [OPPORTUNITY_NAME_FIELD, ACCOUNT_NAME_FIELD, ACCOUNT_ID_FIELD];

    // Wire method to get the data of fields
    @wire(getRecord, { recordId: '$recordId', fields })
    opportunity;]

3. Now call getFieldValue to get the field values.
[let oppName = getFieldValue(this.opportunity.data, OPPORTUNITY_NAME_FIELD);
//let oppName = this.opportunity.data.fields.Name.value; // Also access this way]

4. Now create an object of fields to update then pass that fields object to updateRecord method to update. here in field object Id field is mandatory to update.
[let fields = {
Id: accId,
Name: oppName
}
const recordInput = { fields };
updateRecord(recordInput);]
Ex: We have an opportunity record, on opportunity details page, create a button to check and update the Name of opportunity should be same as account Name, if not then it will update account Name to match with opportunity. 

updateRecordUsingUiRecordApi.html
[<template>
    <lightning-button name="Update Name" label="Update Account Name" onclick={updateAccount}>
    </lightning-button>
</template>]

updateRecordUsingUiRecordApi.js
[import { LightningElement, api, wire } from 'lwc';
import {getRecord, getFieldValue, updateRecord} from 'lightning/uiRecordApi';
import {ShowToastEvent} from 'lightning/platformShowToastEvent';
import OPPORTUNITY_NAME_FIELD from '@salesforce/schema/Opportunity.Name';
import ACCOUNT_NAME_FIELD from '@salesforce/schema/Opportunity.Account.Name';
import ACCOUNT_ID_FIELD from '@salesforce/schema/Opportunity.Account.Id';

const fields = [OPPORTUNITY_NAME_FIELD, ACCOUNT_NAME_FIELD, ACCOUNT_ID_FIELD];

export default class UpdateRecordUsingUiRecordApi extends LightningElement {
    @api recordId; // get the current record id

    // Wire method to get the data of fields
    @wire(getRecord, { recordId: '$recordId', fields })
    opportunity;

    updateAccount(){
        /*
        * we can access field values directly referencing the value
        * or you can use also use getFieldValue to get the value
        */
        let oppName = getFieldValue(this.opportunity.data, OPPORTUNITY_NAME_FIELD);
        //let oppName = this.opportunity.data.fields.Name.value; // Also access this way
        let accName = this.opportunity.data.fields.Account.value.fields.Name.value;
        let accId = getFieldValue(this.opportunity.data, ACCOUNT_ID_FIELD);

        if(oppName != accName){
            /* 
             * create an object of record which you are going to update, 
             * Id field is mandatory, then add fields which are going to update
             */
            let fields = {
                Id: accId,
                Name: oppName
            }
            const recordInput = { fields };
            updateRecord(recordInput)
            .then(() =>{
                this.dispatchEvent(
                    new ShowToastEvent({
                        title: 'Success!',
                        message: 'Account name updated successfully',
                        variant: 'success'
                    })
                )
            })
            .catch(error =>{
                this.dispatchEvent(
                    new ShowToastEvent({
                        title: 'Error!',
                        message: 'Something went wrong while updating account',
                        variant: 'error'
                    })
                )
            })
        } else{
            this.dispatchEvent(
                new ShowToastEvent({
                    title: 'Success',
                    message: 'It\'s already updated',
                    variant: 'success' 
                })
            );
        }
    }
}]
updateRecordUsingUiRecordApi.js-meta.xml
[<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>48.0</apiVersion>
    <isExposed>true</isExposed>
    <targets>
        <target>lightning__RecordPage</target>
    </targets>
</LightningComponentBundle>]
You can also find the above code in SWDC WORLD.

COMMENTS

Name

Android Apps,1,Apex,7,Apex Methods,1,Batch Apex,2,Chrome Add-on,1,Chrome browser,1,Coding Best Practices,2,CRM Basics,1,cURL,1,Database Query,1,Dataset,1,Dynamic Apex,3,Dynamic SOQL,1,Einstein Analytics,9,Future Apex,1,Git,1,Google Chrome,1,IDs and Urls Hacks,1,JS for LWC,5,Lightning Components,2,lightning Page,1,Lightning Web Components,14,Linux for Windows users,1,LWC,16,LWC-JEST,7,Queueable Apex,1,Redirect page,1,REGEX,1,REST API,1,Salesforce CRM,1,Salesforce Errors,1,Salesforce Handy Commands,1,Salesforce Interview Questions,14,Salesforce Lightning,1,Salesforce New Features,1,Salesforce Tasks,2,Schedule Apex,1,SLDS,4,SVG Image,3,Test Class,1,Triggers,1,uiObjectInfoApi,1,Visualforce Pages,3,Visualforce Pagination,2,VS Code,2,Wave Analytics,7,Winter Release Notes,1,workbench,1,
ltr
item
SWDC WORLD (Software Development Center Of The World) - is a Multi author and Multi Technology Blog: Update any record without using apex class in LWC
Update any record without using apex class in LWC
Update any record without using apex class in LWC,Update records using uiRecordApi in Lightning web components, getRecord getFieldValue updateRecord
SWDC WORLD (Software Development Center Of The World) - is a Multi author and Multi Technology Blog
https://www.swdcworld.com/2020/08/update-any-record-without-using-apex.html
https://www.swdcworld.com/
https://www.swdcworld.com/
https://www.swdcworld.com/2020/08/update-any-record-without-using-apex.html
true
5370056087523941001
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy