🐡

modelとFirebaseのラッパーは近くに置いておく

2023/11/08に公開

何を言っているのかについて

Firebase/Firestoreを使用する際に型を担保するためにmodelsディレクトリを作成している。例えば、フロントエンドとバックエンドが一緒になったモノレポの場合、modelsディレクトリがフロントエンド用のディレクトリとバックエンド用のディレクトリに2つ存在することになる。また、Timestamp型を使用する場合は、フロント側はFirebase sdkのTimestampをバックエンドはFirebase-admin sdkのTimestampを使用することになる。

/fronend
  /models <- Firebase sdk
/backend
  /models <- Firebase-admin sdk

フロントエンドとバックエンドではTimestampをimportする際の参照先が異なる(以下)

// フロントエンド
import { Timestamp } from 'firebase/firestore'

// バックエンド
import { Timestamp } from 'firebase-admin/firestore'

ファイルの中身を統一するために、Timestampはこちらが用意したラッパーを使用するようにする。
このファイルをmodelsディレクトリを同じ階層に並べておけば、フロント・バックでモデルを更新する際にコピペとラッパーファイルだけを書き換えるだけで済む。

export const AppTimestamp = Timestamp

という話。

Discussion