[困っていること]
エラーメッセージが表示されるがレコードの登録がされてしまう
kintone.proxy(‘https://XXX’, ‘GET’, {
}
の処理が上手くいかないためエラーメッセージがイベントに格納されても処理が実行されてしまう状況です。
原因は同期処理と判断し、同期処理を実施したもののうまく実行できていない状況です。
[やりたいこと]
エラーの処理が走るときはレコードの登録がされないようにしたい。
[現状]
いくつかのAPIと同期処理が混在しているプログラムとなっており、同期処理が正しいかも不安なプログラムです。
どのように改善すれば不具合修正可能なのかをご教授頂けると幸いです。
(function ($) {
"use strict";
kintone.events.on(["app.record.create.submit", "app.record.edit.submit"], function (event) {
var record = event.record;
var countLineMemberList = memberList.length;//メンバー数を格納
var errorMessage = "入力に誤りがあります。";
var errflg = false;
var i, j = 0;
//処理省略
// リクエストパラメータを指定
var requestParam = {
//取得してくるレコード
'app': XXXX
};
return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', requestParam).then(function (resp) {
//処理省略
//同期処理
function callbackfunc(callback) {
// メンバーリストの数だけループ
const promises = event.record.memberList.value.map(member => {
//登録データを取得
kintone.proxy('https://XXX', 'GET', {
'Authorization': authorization,
'Accept': 'application/json'
}, {}).then(function (args) {
var obj = kintone.app.record.get();
//userIdの正規表現で使用する値を代入
var checkPatternUserName = record.memberList.value[j].value.userName;
//コンストラクタに値を代入し正規表現に用いる
var regexUserName = new RegExp('"' + checkPatternUserName.value + '"');
//testメソッドを実行。userIdが一致しなければ実行
if (regexUserName.test(args[0]) === false) {
obj.error = errorMessage;
obj.record.memberList.value[j].value.userId.error = 'エラーメッセージ';
console.log(record.memberList.value[j].value.userId.error);
kintone.app.record.set(obj);
console.log("NG");
} else {
//処理なし
}
j++;
}).catch(function () {
event.error = 'レコード取得エラー';
return event;
});
//iを使った処理
//promiseを返す
return promise;
});
Promise.all(promises).then(() => {
console.log(event);
return event;
callback();
});
}
function message() {
if (errflg) {
event.error = errorMessage;
}
console.log("OK");
console.log(event);
return event;
}
callbackfunc(message);
}).catch(function () {
event.error = 'レコード取得エラー';
return event;
});
});
})();