tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:RemoteObjectsのCreate処理でハマった話

JavaScript側でSalesforceのデータを登録できるRemoteObjectsのCreate処理についてちょっと勉強しました。いくつかうまくいかなかったのでまとめておこうと思います。

ハマったところ①:数値項目の登録

数値項目の登録でエラーが発生しました。おそらくデータ型が正しく指定できていないことが原因だと思います。

f:id:tyoshikawa1106:20140904231941p:plain

日付型の場合は"new Date()"で日付型に変換する必要があったのでJavaScriptでの数値型変換で使用する"Number()"とか"parseInt()"など試してみたのですがうまくいきませんでした。

ハマったところ②:複数件一括登録処理

行動(Event)を登録後に、それに紐付く招待ユーザ(EventRelation)を複数件一括登録してみようとしてみたのですがうまくいきませんでした。

通常、登録する値をセットする方法はこんな感じだと思います。

var eventRelation = new SObjectModel.EventRelation();
eventRelation.set('EventId', eventId);
eventRelation.set('RelationId', selectUsers[0]);

eventRelation.create(function(err, results, event) {
    // 省略
}

このCreate処理は次のような書き方でも同じように動作します。

var selectUsers = $j('#users').val();

var records = { EventId: eventId, RelationId: selectUsers[0] };

var eventRelation = new SObjectModel.EventRelation();
eventRelation.create(records, function(err, results, event) {
    // 省略
});

なので複数件登録したい場合は、こんな感じの書き方でいけるかなと試してみたのですが...

var selectUsers = $j('#users').val();

var records = [];
for (var i = 0; i < listCnt; i++) {
    var rec = { EventId: eventId, RelationId: selectUsers[i] };
    records.push(rec);
}

eventRelation.create(records, function(err, results, event) {
    // 省略
});

無効なパラメータエラーになりました。こういう書き方ではなかったみたいです。。

f:id:tyoshikawa1106:20140904233642p:plain


この数値型の登録エラーと複数件登録の問題が解決できませんでした。RemoteObjectsはまだパイロット版の機能なので、検索してみても情報が少なめで見つけることができませんでした。もうすぐ正式リリースされるみたいなのでそのときに解決できるといいなと思います。