0
0

同じ構造を省略する例

Posted at

はじめに

json構造で、同じ箇所を共通化する方法で迷ったので記載しておく。

同じ構造を省略する例

非同期を扱う場合でkintoneを例にとると、
あるアプリデータを追加する場合と修正する場合、id違いである。
record箇所は追加と修正で、共通のデータを再利用するようにしましょう。
・追加の場合

const body = {
  "app": kintone.app.getId(),
  "record": {
    "文字列1行": {
      "value": "テスト"
    },
    "文字列複数行": {
      "value": "テスト\nテスト2"
    },
    "数値": {
      "value": "20"
    },
    "日時": {
      "value": "2014-02-16T08:57:00Z"
    },
    "チェックボックス": {
      "value": ["sample1", "sample2"]
    },
    "ユーザー選択": {
      "value": [
        {
          "code": "sato"
        }
      ]
    },
    "ドロップダウン": {
      "value": "sample1"
    },
    "リンク_ウェブ": {
      "value": "https://www.cybozu.com"
    },
    "テーブル": {
      "value": [
        {
          "value": {
            "テーブル文字列": {
              "value": "テスト"
            }
          }
        }
      ]
    }
  }
}
await kintone.api(kintone.api.url('/k/v1/record.json', true), 'POST', body);

・修正の場合

const body2= {
  "app": kintone.app.getId(),
  "id": 100,
  "record": {
    "文字列1行": {
      "value": "テスト"
    },
    "文字列複数行": {
      "value": "テスト\nテスト2"
    },
    "数値": {
      "value": "20"
    },
    "日時": {
      "value": "2014-02-16T08:57:00Z"
    },
    "チェックボックス": {
      "value": ["sample1", "sample2"]
    },
    "ユーザー選択": {
      "value": [
        {
          "code": "sato"
        }
      ]
    },
    "ドロップダウン": {
      "value": "sample1"
    },
    "リンク_ウェブ": {
      "value": "https://www.cybozu.com"
    },
    "テーブル": {
      "value": [
        {
          "value": {
            "テーブル文字列": {
              "value": "テスト"
            }
          }
        }
      ]
    }
  }
}
await kintone.api(kintone.api.url('/k/v1/record.json', true), 'PUT',body2);

以下のようにして重複は避けてください。

const baseRecord = {
  "文字列1行": {
    "value": "テスト"
  },
  "文字列複数行": {
    "value": "テスト\nテスト2"
  },
  // ... 他のフィールド
};

// 追加の場合
const bodyForAdd = {
  "app": kintone.app.getId(),
  "record": baseRecord
};
await kintone.api(kintone.api.url('/k/v1/record.json', true), 'POST', bodyForAdd);

// 修正の場合
const bodyForUpdate = {
  "app": kintone.app.getId(),
  "id": 100,
  "record": baseRecord
};
await kintone.api(kintone.api.url('/k/v1/record.json', true), 'PUT', bodyForUpdate);

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