お世話になっております。
2000件以上の登録についてご相談が御座います。
下記のソースで2000件以上のレコードを保存しており、再起処理が上手くいかず悩んでいます。
7000件のレコードを登録した場合に最初の2000件を登録し、再起処理を実行するのですが再起処理実行と同時?に「情報の登録が完了しました。」とメッセージが出てしまい、4000件までは登録され、残りの再起処理が実行されず3000件が登録できない状態です。
再起処理を行うか判断するif文をresolveの手前に持ってきても全件登録がされますが次はretrunで返らず、メッセージが表示されない状態で別画面に遷移することなく処理が終わってしまいます。
再起処理を上手く回す方法があればご教示いただけませんでしょうか?
//新規追加登録後のイベント
kintone.events.on('app.record.create.submit.success',function (event) {
returnnewkintone.Promise(function (resolve, reject) {
kintone.api(kintone.api.url('/k/v1/apps',true),'GET', {},function (resp) {
//レコード情報の取得
varrecord = event.record;
//追加するレコードリスト
varnewRecords;
//レコード情報の作成
newRecords = createNewRecords(record);
//newRecordsで登録する配列を作成
//(例) [{…}, {…}]
// 0: {TEST: {…}, TESTコード: {…}, 日付: {…}}
// 1: {TEST: {…}, TESTコード: {…}, 日付: {…}}
//...2001: {TEST: {…}, TESTコード: {…}, 日付: {…}}
//bulkRequestで使用するbodyの配列を作成
varbulkLists = bulkCreate(newRecords);
//bodyを作成し、配列化する
//(例) [{…}, {…}]
//0:
// api: "/k/v1/records.json"
// method: "POST"
// payload: {app: 1, records: Array(2)}←Arry(2000)にnewRecordsで作成した2000件が入っています。
//1:
// api: "/k/v1/records.json"
// method: "POST"
// payload: {app: 1, records: Array(1)}
//bRequestで登録を行います。
varbResult = bRequest(bulkLists,0);
if(bResult) {
resolve(bResult);
}else{
returnevent;
}
},function (error) {
// error
alert("情報の登録に失敗しました。");
});
}).then(function (resp) {
alert("情報の登録が完了しました。");
event.url = location.protocol + "//" + location.hostname + "/k/" + APPID(アプリ番号);
returnevent;
});
});
functionbRequest(bodyLists, count) {
returnnewkintone.Promise(function (resolve, reject) {
kintone.api(kintone.api.url('/k/v1/bulkRequest',true),'POST', bodyLists[count],function (resp) {
resolve(resp);
},function (error) {
console.log(error);
returnfalse;
});
}).then(function (resp) {
count++;
//body配列の数がcountと一緒になるまで再起処理を行う
if(bodyLists.length==count) {
returnture;
}else{
bRequest(bodyLists, count);
}
});
}