はじめに
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);