kintone-rest-api-clientのdeleteAllRecordsを使った動作検証用のサンプルコードです。
環境
- macOS
- node v16.13.1
- @kintone/rest-api-client ^3.1.11
サンプルコード
require('dotenv').config()
const log4js = require('log4js')
const { KintoneRestAPIClient } = require('@kintone/rest-api-client')
const client = new KintoneRestAPIClient({
baseUrl: process.env.KINTONE_DOMAIN,
auth: { apiToken: process.env.KINTONE_API_TOKEN }
});
log4js.configure({
appenders: {
out: { type: 'stdout'}
},
categories: {
default: { appenders: ['out'], level: 'debug'}
}
})
const logger = log4js.getLogger();
// kintoneのレコードID配列からレコードIDオブジェクトの配列を生成する
// 引数:kintoneRecordIdsArray・・・kintoneのレコードID配列 ex. [1,25,7,10]
// return:kintoneのレコードIDオブジェクトの配列 ex. [{id: 1}, {id: 25}, {id: 7}, {id: 10}]
module.exports.generateObjectForDeletion = (kintoneRecordIdsArray) => {
try {
logger.debug(`param: ${JSON.stringify(kintoneRecordIdsArray)}`)
const kintoneArrayOfObject = []
for(const recordId of kintoneRecordIdsArray) {
kintoneArrayOfObject.push({ id: recordId })
}
return kintoneArrayOfObject
} catch (error) {
logger.debug(`error: ${error}`)
}
}
// kintoneのレコードID配列から対象のレコードを削除する
// 引数:kintoneRecordIdsArray・・・kintoneのレコードID配列 ex. [1,25,7,10]
// return: kintone-rest-api-client の deleteAllRecordsの戻り値
module.exports.deleteResearchers = async (kintoneRecordIdsArray) => {
try {
logger.debug(`param: ${JSON.stringify(kintoneRecordIdsArray)}`)
const kintoneArrayOfObject = this.generateObjectForDeletion(kintoneRecordIdsArray)
const response = await client.record.deleteAllRecords({
app: process.env.KINTONE_APPID, records: kintoneArrayOfObject
});
logger.debug(response)
return response
} catch (error) {
logger.debug(`error header: ${error}`)
logger.debug(`error all: ${JSON.stringify(error)}`)
logger.debug(`error kintoneRestAPIError: ${JSON.stringify(error.error)}`)
}
}
テストコード
require('dotenv').config()
const { deleteResearchers, generateObjectForDeletion } = require('../deleteKintoneResearcher');
test('削除対象のレコードが存在しない時', async () => {
const records = [9999]
const response = await deleteResearchers(records)
expect(response).toEqual(undefined);
});
test('削除対象のレコードが1件の時', async () => {
const records = [21]
const response = await deleteResearchers(records)
expect(response).toEqual({});
});
test('削除対象のレコードが5件の時で、存在しないレコードがある場合はロールバックされる', async () => {
const records = [1,2,5,7,99999]
const response = await deleteResearchers(records)
expect(response).toEqual({});
});
test('削除対象のレコード配列1件からdeleteAllRecords用の配列オブジェクトを生成する', () => {
const records = [22]
const response = generateObjectForDeletion(records)
expect(response).toEqual([{ id: 22}]);
});
test('削除対象のレコード配列5件からdeleteAllRecords用の配列オブジェクトを生成する', () => {
const records = [1,2,3,5,6]
const match = [
{ id: 1},
{ id: 2},
{ id: 3},
{ id: 5},
{ id: 6},
]
const response = generateObjectForDeletion(records)
expect(response).toEqual(match);
});
参考資料
kintone-rest-api-client