前提
- S3にHTTPリクエスト経由のデータをJSONファイルとして保存・差分更新したい
- S3の
Last-Modified
は 作成日時と更新日時を区別しない
オブジェクト作成日または最終更新日のいずれか遅い方。マルチパートアップロードの場合、オブジェクトの作成日はマルチパートアップロードの開始日です。
-
それらを区別してシンプルに保存したい
-
deepmerge はオブジェクトを後勝ちでマージできる
やったこと
const 保存済みのデータ = // S3から取得。なければ空オブジェクト
const 現在日時 = new Date().toISOString();
const 新しく保存するデータ = deepmerge.all([
{ データ作成日時: 現在日時 },
保存済みのデータ,
リクエスト経由の更新したい差分,
{ 最終更新日時: 現在日時 },
])
このような順でマージすることで、日時系は常に現在日時を単純に作成するだけでも、
- 初回(保存済みのデータがない場合)のみデータ作成日時が更新され、
- 保存済みのデータに対してリクエスト経由のデータ差分が更新され、
- 常に最終更新日時を更新
ということが実現できる