🐡
modelとFirebaseのラッパーは近くに置いておく
何を言っているのかについて
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