submit処理の中断について

追加しようとしているレコードが既に存在している場合、エラーメッセージを表示して、submitを中断しようとしています。

Window.alertを入れ確認しながら実行して、ようやくevent.errorの手前まで来ました。

このあと、どうしてもevent.errorにならず、レコードが登録されてしまいます。

中断させるにはどのようにすればよいか、どなたかご教授いただけないでしょうか。

function doubleRecCheck(event) {
'use strict';
//重複チェック
let rec = event.record;
let appID = kintone.app.getId();
let setQuery = "重複チェック = \"" + rec.重複チェック.value + "\"";
let body = {
'app': appID,
'query': setQuery,
'fields': ['会社CD', '会社名', '部署CD','部署名','作業所CD','作業所名','年','月','重複チェック']
};

return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body).then(function(resp) {
window.alert("レコード件数:" + resp.records.length);
const intervalId = setInterval(RecCheck, 1000);
console.log(resp.records);
let event = kintone.app.record.get();
rec = event.record;
window.alert(rec.作業所名.value);
function RecCheck() {
if (resp.records.length > 0) {
window.alert("重複あり");
window.alert("作業所:" + rec.作業所名.value + "の" + rec.年.value + "年"
+ rec.月.value + "月の予定は既に登録されています。");
event.error = "作業所:" + rec.作業所名.value + "の" + rec.年.value + "年"
+ rec.月.value + "月の予定は既に登録されています。";
clearInterval(intervalId);
return false;
}
}
return event;
});
}

他の方の投稿を参照したり、promise処理を調べたりしているのですが、解決できません。

すみません、よろしくお願いします。

テクバン株式会社の北原です。

処理を確認しましたが、function doubleRecCheck(event)を呼び出している箇所はどのような記述になっていますでしょうか。

私の環境で動作確認したサンプルソースをコメント書き込みいたします。

※一部、エラーや無限ループ状態となっていたため、修正している箇所がございます。

let createevents = [
    'app.record.create.submit',
]

// 保存時
kintone.events.on(createevents, function (event) {
    return new kintone.Promise(function (resolve) {
        resolve(doubleRecCheck(event));
    });
});

function doubleRecCheck(event) {
    'use strict';
    //重複チェック
    let rec = event.record;
    let appID = kintone.app.getId();
    let setQuery = "重複チェック = \"" + rec.重複チェック.value + "\"";
    let body = {
        'app': appID,
        'query': setQuery,
        'fields': ['会社CD', '会社名', '部署CD', '部署名', '作業所CD', '作業所名', '年', '月', '重複チェック']
    };

    return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body).then(function (resp) {
        window.alert("レコード件数:" + resp.records.length);
        console.log(resp.records);
       rec = event.record;
        window.alert(rec.作業所名.value);
        if (resp.records.length > 0) {
            window.alert("重複あり");
            window.alert("作業所:" + rec.作業所名.value + "の" + rec.年.value + "年"
                + rec.月.value + "月の予定は既に登録されています。");
            event.error = "作業所:" + rec.作業所名.value + "の" + rec.年.value + "年"
                + rec.月.value + "月の予定は既に登録されています。";
        }
        return event;
    });
}

以上、よろしくお願いいたします。

北原さま

ありがとうございます。上手くいきました。

doubleRecCheckルーチンそのものに、promise処理を行わないといけないということですね。

理解不足ですみません。勉強になりました。

今後ともよろしくお願いします。