FirestoreでのcreateAtやupdateAtなど時刻系を文字列で管理する
2022年04月03日 8:57
firestoreでcreateAtやupdateAtを管理する際はtimestampで管理されることが多いと思います。
この時刻系の管理をstringで管理する方法を今回はご紹介したいと思います。
イメージとしてはfitestoreが以下のようになります。
文字列で管理した場合
timestampで管理した場合
Goで構築されたバックエンドでフロントからリクエストを受け取るケースを想定します。
例えば、usersコレクションのcreateAtで範囲検索をしたい場合
createAt
パラメータをクエリストリングから受け取ります。
GET http://localhost:8080/v1/users?createAt=2022-01-11 20:45
createAtを取得したら、あとはバックエンドからそのまま文字列検索でcreateAt
で検索するだけです。下記の例ではcreateAt
が「2022-01-11 20:45」以降のusersを取得します。
Goの組み込み時刻オブジェクトtime.Time
でusers.createAt
を管理している場合。リクエストで受け取った文字列を一度time.Timeに変換する必要があります。
GET http://localhost:8080/v1/users?createAt=2020-05-03T12:04:05.000000Z
上記のようなtime.Timeへの変換処理が必要になります。文字列→time.Timeへの変換はフォマットを合わせたりと何かと面倒なことが多いので不要なら避けたいところだと思います。
フロントとバックエンドが異なるというのは開発現場では良くあることだと思います。フロントはReact.js、TypeScriptを使い、バックエンドは並行性やシンプルな特徴を活かしたGoにするなど。その場合各言語での日付系の処理は把握するのが面倒なところだったりします。そこを文字列で統一することで可読性の向上やフロント、バックエンド間でのコミュニケーションを減らすこともできるので、今後firestoreを導入する際は検討してみてはいかがでしょうか。
文字列でもWhere
, StartAfter
などfirestoreのクエリは問題なく動作しました。
診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。
目次を見る