前提
- Next.js, Firebaseを利用したWebアプリケーション開発
問題
Firestoreを利用した設計についての質問です。
Webアプリを利用するユーザーがアカウントをもち、そのアカウント情報にname
が存在しその値をユニークにしたい場合の設計方針についてです。
/users/{id}
ユーザー情報の実データを上記のようなパス内で保持しfieldにname
がある想定です。
このような場合にname
をユニークにする方針として以下の2通りがあると思っています。
- アカウント作成時に、usersコレクション内の
name
fieldに既に同じname
が存在するか確認する(単一フィールドに対する検索クエリの実行)。存在しない場合のみ会員登録処理を進める。 name
をキーとする別のコレクションを作成する。アカウント作成時にそのコレクションにて既に同じキーのname
が存在するか確認する。存在しない場合のみ会員登録処理を進み、成功した場合にusersコレクションとname
コレクションの両方にバッチ処理で書き込みを実施する
現状name
のユニークをチェックするのみですが、今後アカウント作成時に他の要素もユニークにする必要がある場合、「1」の方針をとっている場合結局「2」の方針へ移行することになると想定しています。
(複数フィールドの検索は素のFirestoreでは提供されていない、且つ他のサービスを利用して実現できるとしても解決方法がやや複雑に感じる?ので(あくまで所感です))
従って「2」の方針をするのが妥当と思っているのですが、どうでしょうか?
- いや、大抵は「1」で事足りる。
- 「〜」という理由もあって「2」にすべきだ。
- 他の手段を検討すべきだ。
などのご意見あれば伺いたく質問させて頂きました。

あなたの回答
tips
プレビュー