0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

kintoneのテーブルでアプリのレコードの登録・更新・削除をする(4)

Last updated at Posted at 2021-08-02

今回はこのシリーズ最終回。
「登録用アプリ」からレコードを削除したときに「英単語アプリ」側もレコードの削除をする。
というカスタマイズをします。
削除するだけなので内容軽めです。

前回までの記事はこちらです。

JavaScript

削除したい英単語はuidsフィールドで特定できるので
uidsから削除する英単語のレコードのレコード番号を取得します。
※レコード番号を指定しないとレコード削除できないようです。

image.png

kintone.events.on(
  ["app.record.detail.delete.submit", "app.record.index.delete.submit"],
  async (event) => {
    const client = new KintoneRestAPIClient();
    const appId = 英単語一覧アプリのID;

    // 英単語一覧アプリ検索
    const resGet = await client.record.getRecords({
      app: appId,
      fields: ["$id"],
      query: `UID in (${event.record.uids.value})`,
    });

    // 削除するレコードのレコード番号を配列に入れる。
    const delIds = [];
    resGet.records.forEach((r) => {
      delIds.push(r.$id.value);
    });

    try {
      const res = await client.record.deleteRecords({
        app: appId,
        ids: delIds,
      });
    } catch (e) {
      console.log(e);
      return false;
    }

    return event;
  }
);

まとめと感想

テーブルから別アプリにレコードを追加するというだけならそんなに考える必要はないのですが、編集、削除、そもそもレコードが削除されちゃったとき等の場合には色々と考えなくてはいけませんね。
2つのアプリ間で不整合が起こる可能性大の割と危険なカスタマイズだなぁと思いました。

それと・・・ユニークキーで削除できたらいいのになぁ~。
次に同じようなものを作る時はレコードIDで特定するようにしようかなと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?