To save a record using Lightning Data Service, call saveRecord on the force:recordData
component, and pass in a callback function to be invoked after the save operation
completes.
The Lightning Data Service save operation is used in two cases.
- To save changes to an existing record
- To create and save a new record
To save changes to an existing record, load the record in EDIT mode and call saveRecord on the force:recordData component.
To save a new record, and thus create it, create the record from a record template,
as described in Creating a Record. Then call saveRecord on the force:recordData component.
Load a Record in EDIT Mode
To load a record that might be updated, set the
force:recordData tag’s
mode
attribute to “EDIT”. Other than explicitly setting the
mode, loading a record for editing is the same as loading it for any
other purpose.
Since Lightning Data Service records are shared across multiple
components, loading records load the component with a copy of the record instead
of a direct reference. If a component loads a record in VIEW mode, Lightning
Data Service will automatically overwrite that copy with a newer copy of the
record when the record is changed. If a record is loaded in EDIT mode, the
record is not updated when the record is changed. This prevents unsaved changes
from appearing in components that reference the record while the record is being
edited, and prevents any edits in progress from being overwritten. Notifications
are still sent in both modes.
Call saveRecord to Save Record
Changes
To perform the save operation, call saveRecord
on the force:recordData component from the
appropriate controller action handler. saveRecord takes one argument—a callback function to be invoked
when the operation completes. This callback function receives a SaveRecordResult as its only parameter. SaveRecordResult includes a state attribute that indicates success or error,
and other details you can use to handle the result of the operation.
Saving a Record
The following example illustrates the essentials of saving a record using Lightning
Data Service. It’s intended for use on a record page. The record ID
is supplied by the implicit recordId
attribute added by the force:hasRecordId
interface.
ldsSave.cmp
If
you’re using this component with an object that has a first and last name, such
as contacts, create a separate lightning:input component for {!v.simpleRecord.FirstName} and {!v.simpleRecord.LastName}.
This component loads a record
using
force:recordData set to EDIT mode, and
provides a form for editing record values. (In this simple example, just the record
name field.)
ldsSaveController.js
The
handleSaveRecord action here is a minimal
version. There’s no form validation or real error handling. Whatever is entered in
the form is attempted to be saved to the record.