updateRecord(recordInput, clientOptions)

レコードを更新します。更新するレコードのレコード ID を recordInput に指定します。

構文 

1import { updateRecord } from 'lightning/uiRecordApi';
2updateRecord(recordInput: Record, clientOptions?: Object): Promise<Record>

ユーザインターフェース API リソース 

1PATCH /ui-api/records/{recordId}

updateRecord では、このユーザインターフェース API リソースが使用されますが、そのすべてのパラメータはサポートされません。

パラメータ 

  • recordInput — (必須) レコードの更新に使用される RecordInput オブジェクト。オブジェクトを作成するには、generateRecordInputForUpdate(record, objectInfo) をコールします。項目とその値を渡して RecordInput オブジェクトを作成する方法もあります。**「使用方法」**セクションを参照してください。以下は、recordInput のプロパティです。

  • triggerOtherEmail — (省略可能) ケースで、組織外のユーザにメールを送信するかどうかを指定します。Salesforce で、このメールは、ケースの取引先責任者の作成、編集、削除によってトリガされます。デフォルト値は、false です。

  • triggerUserEmail — (省略可能) ケースまたはリードで、組織のユーザにメールを送信するかどうかを指定します。Salesforce ユーザインターフェースで、このメールはパスワードのリセット、ユーザの作成、ケース所有者の変更、ケースへのコメントの追加などのさまざまなイベントによってトリガされる場合があります。デフォルト値は、false です。

    ケース所有者の変更では、useDefaultRule=true も設定します。設定しないと、メールが送信されません。

  • useDefaultRule — ケースまたはリードで、デフォルト (有効) の割り当てルールを使用するかどうかを指定します。useDefaultRule を指定する場合は、assignmentRuleId を指定しないでください。デフォルト値は、false です。

    取引先責任者で、デフォルトのテリトリー割り当てルールを適用するかどうかを指定します。

    • allowSaveOnDuplicate — 重複レコードを保存するかどうかを指定します。デフォルト値は、false です。
    • apiName — レコードを作成するには、レコードの作成元のオブジェクトの API 参照名を指定します。レコードを更新するには、null を使用するか、このプロパティを渡さないでください。
    • fields — 項目名の項目値への対応付け。「レコードを更新する」を参照してください。
  • clientOptions — (省略可能) レコードを更新する前に競合がないかをチェックするには、const clientOptions = {'ifUnmodifiedSince' : lastModifiedDate} を渡します。レコードオブジェクトを返すワイヤサービスアダプタを介して lastModifiedDate を取得します。つまり、const lastModifiedDate = record.fields.LastModifiedDate.value; のように指定します。

戻り値 

更新されたレコードを使用して解決される Promise オブジェクト。このレコードには、レコードレイアウトの項目のデータが含まれます。

使用方法 

このワイヤアダプタを使用する前に、これより簡単な方法ではデータを更新できないことを確認します。レコードを操作するためのフォームを作成するには、lightning-record-*-form コンポーネントを検討してください。

カスタムフォームを作成するのは、必要なカスタマイズが lightning-record-*-form コンポーネントで可能な範囲を超える場合のみにしてください。

Note

次の例では、レコードを更新するカスタムフォームを作成します。getSingleRecord Apex コントローラを使用して、単一の連絡先レコードの FirstName 項目と LastName 項目を読み込みます。(Name は複合項目です。名前を編集するには、FirstName 項目と LastName 項目を使用する必要があります。)

名前項目の一方または両方が空の場合は、カスタム動作として [連絡先の更新] ボタンが無効になります。Id 項目は参照専用で無効になっているため、ユーザが編集することはできません。

1<template>
2  <lightning-card title="LdsUpdateRecord" icon-name="standard:record">
3    <div class="slds-m-around_medium">
4      <template lwc:if={contact.data}>
5        <lightning-input label="Id" disabled value={contact.data.Id}></lightning-input>
6        <lightning-input
7          label="First Name"
8          value={contact.data.FirstName}
9          data-field="FirstName"
10          onchange={handleChange}
11          class="slds-m-bottom_x-small"
12        ></lightning-input>
13        <lightning-input
14          label="Last Name"
15          value={contact.data.LastName}
16          data-field="LastName"
17          onchange={handleChange}
18          class="slds-m-bottom_x-small"
19          required
20        ></lightning-input>
21        <lightning-button
22          label="Update Contact"
23          variant="brand"
24          onclick={updateContact}
25          disabled={disabled}
26        ></lightning-button>
27      </template>
28      <template lwc:elseif={contact.error}>
29        <!-- handle Apex error -->
30      </template>
31    </div>
32  </lightning-card>
33</template>

変更は updateRecord を使用して更新されます。クライアント側では、必須設定は適用されません。無効な項目のエラーを項目��ベルで表示するには、reportValidity() をコールします。

lightning-record-*-form コンポーネントを使用すると、Salesforce スキーマに基づいてすべての項目が表示されます。たとえば、クライアント側では、必須項目に対する必須設定が自動的に処理されます。フォームの機能をカスタマイズするには、updateRecord を使用してください。たとえば、必須でない FirstName 項目をユーザが空白のままにすることを防止してデータの完全性を向上させたり、特定の項目が有効でないときにボタンを無効にしたりできます。

Note

1import { LightningElement, track, wire } from "lwc";
2import { ShowToastEvent } from "lightning/platformShowToastEvent";
3import { updateRecord } from "lightning/uiRecordApi";
4import { refreshApex } from "@salesforce/apex";
5import getSingleContact from "@salesforce/apex/ContactController.getSingleContact";
6import FIRSTNAME_FIELD from "@salesforce/schema/Contact.FirstName";
7import LASTNAME_FIELD from "@salesforce/schema/Contact.LastName";
8import ID_FIELD from "@salesforce/schema/Contact.Id";
9
10export default class LdsUpdateRecord extends LightningElement {
11  disabled = false;
12  @track error;
13
14  @wire(getSingleContact)
15  contact;
16
17  handleChange(event) {
18    // Display field-level errors and disable button if a name field is empty.
19    if (!event.target.value) {
20      event.target.reportValidity();
21      this.disabled = true;
22    } else {
23      this.disabled = false;
24    }
25  }
26
27  updateContact() {
28    const allValid = [...this.template.querySelectorAll("lightning-input")].reduce(
29      (validSoFar, inputFields) => {
30        inputFields.reportValidity();
31        return validSoFar && inputFields.checkValidity();
32      },
33      true,
34    );
35
36    if (allValid) {
37      // Create the recordInput object
38      const fields = {};
39      fields[ID_FIELD.fieldApiName] = this.contactId;
40      fields[FIRSTNAME_FIELD.fieldApiName] = this.template.querySelector(
41        "[data-field='FirstName']",
42      ).value;
43      fields[LASTNAME_FIELD.fieldApiName] =
44        this.template.querySelector("[data-field='LastName']").value;
45
46      const recordInput = { fields };
47
48      updateRecord(recordInput)
49        .then(() => {
50          this.dispatchEvent(
51            new ShowToastEvent({
52              title: "Success",
53              message: "Contact updated",
54              variant: "success",
55            }),
56          );
57          // Display fresh data in the form
58          return refreshApex(this.contact);
59        })
60        .catch((error) => {
61          this.dispatchEvent(
62            new ShowToastEvent({
63              title: "Error creating record",
64              message: error.body.message,
65              variant: "error",
66            }),
67          );
68        });
69    } else {
70      // The form is not valid
71      this.dispatchEvent(
72        new ShowToastEvent({
73          title: "Something is wrong",
74          message: "Check your input and try again.",
75          variant: "error",
76        }),
77      );
78    }
79  }
80}

getSingleContact Apex メソッドは、単一の連絡先レコードを返します。

1public with sharing class ContactController {
2    @AuraEnabled(cacheable=true)
3    public static Contact getSingleContact() {
4        return [
5            SELECT Id, Name, Title, Phone, Email, Picture__c
6            FROM Contact
7            WITH SECURITY_ENFORCED
8            LIMIT 1
9        ];
10    }
11}

関連トピック

The Japanese Summer '24 guide is now live

日本語の Summer '24 ガイドが公開されました! 「Component Reference (コンポーネントリファレンス)」は、以前と同様にコンポーネントライブラリにあります。