0
0

S3にJSONを保存・差分更新するとき作成日時と更新日時も含めてdeep mergeだけでシンプルに保存するプチ工夫

Last updated at Posted at 2024-08-15

前提

オブジェクト作成日または最終更新日のいずれか遅い方。マルチパートアップロードの場合、オブジェクトの作成日はマルチパートアップロードの開始日です。

  • それらを区別してシンプルに保存したい

  • deepmerge はオブジェクトを後勝ちでマージできる

やったこと

const 保存済みのデータ = // S3から取得。なければ空オブジェクト
const 現在日時 = new Date().toISOString();

const 新しく保存するデータ = deepmerge.all([
  { データ作成日時: 現在日時 },
  保存済みのデータ,
  リクエスト経由の更新したい差分,
  { 最終更新日時: 現在日時 },
])

このような順でマージすることで、日時系は常に現在日時を単純に作成するだけでも、

  1. 初回(保存済みのデータがない場合)のみデータ作成日時が更新され、
  2. 保存済みのデータに対してリクエスト経由のデータ差分が更新され、
  3. 常に最終更新日時を更新

ということが実現できる

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