この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

リモートオブジェクトを使用したレコードの更新

リモートオブジェクトモデルインスタンスで update() をコールすることでレコードを更新します。
update() は 3 つの引数 (すべて省略可能) を受け入れ、指定された引数に応じて 1 つまたは複数のレコードを同時に更新できます。
1RemoteObjectModel.update([record_ids], {field_values}, callback_function)
record_ids は、文字列の配列で、文字列は更新するレコードの Id です。このパラメータが省略されると、リモートオブジェクトインスタンスに設定された Id が使用されます。update() をそのままコールするのが、最も単純なレコード更新方法です。
1ctDetails = {FirstName: "Marc", LastName: "Benioff"};
2ct = new RemoteObjectModel.Contact(ctDetails);
3ct.create();
4
5// Later, in response to a page event...
6ct.set('Phone', '555-1212');
7ct.update();
多くの場合、フォームの送信に応じたレコードの更新などが必要になります。レコードの更新は、レコードの Id など、フォームの値を読み込み、その値を update() に渡すだけの簡単な処理です。次に例を示します。
1var record = new RemoteObjectModel.Contact();
2record.update($j('#contactId').val(),
3{
4    FirstName: $j('#fName').val(),
5    LastName: $j('#lName').val(),
6    Phone: $j('#phone').val(),
7    Notes: $j('#notes').val() 
8});
堅牢なコードには、エラーを処理するコールバックが含まれます。次のコードは、前のサンプルと同じ処理を実行しますが、イベントハンドラとコールバック関数を使用するように変更されています。
1// Handle the Save button
2function updateContact(e){
3    e.preventDefault();
4
5    var record = new RemoteObjectModel.Contact({
6        Id: $jQuery('#contactId').val(),
7        FirstName: $jQuery('#fName').val(),
8        LastName: $jQuery('#lName').val(),
9        Phone: $jQuery('#phone').val(),
10        Notes: $jQuery('#notes').val() 
11    });
12    record.update(updateCallback);
13}
14
15// Callback to handle DML Remote Objects calls
16function updateCallback(err, ids){
17    if (err) { 
18        displayError(err); 
19    } else {
20        // Reload the contacts with current list
21        getAllContacts();
22        $jQuery.mobile.changePage('#listpage', {changeHash: true});
23    }
24}
実行する更新が統一されている限り、つまりどのレコードに対しても同じ場合は、同時に複数のレコードを更新できます。たとえば、リストから選択した項目の集合を更新して、状況項目を「アーカイブ済み」や現在のタイムスタンプに変更する必要がある場合などです。1 つの要求で複数のレコードを更新するには、Id の配列を update() に渡します。更新する項目は、リモートオブジェクトモデル自体の一部として設定できますが、次のように update() に直接渡す方が確実です。
1var ct = new RemoteObjectModel.Contact();
2ct.update(
3    ['003xxxxxxxxxxxxxxx', '003xxxxxxxxxxxxxxx'], 
4    { FirstName: "George", LastName: "Foreman" },
5    function(err, ids) {
6        if (err) { 
7            displayError(err); 
8        } else {
9            // Reload the contacts with current list
10            getAllContacts();
11            $jQuery('#status').html(ids.length + ' record(s) updated.');
12            $jQuery.mobile.changePage('#listpage', {changeHash: true});
13        }
14});

この方法で複数のレコードを更新すると、すべてのレコードが同じサーバ側トランザクションで更新されます。

メモ