teratail header banner
teratail header banner
質問するログイン新規登録
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

Q&A

0回答

538閲覧

Firestoreのアカウント情報に含まれるnameをユニークにする場合の方針検討

bbdd

総合スコア43

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

0グッド

0クリップ

投稿2022/05/13 16:51

0

0

前提

  • Next.js, Firebaseを利用したWebアプリケーション開発

問題

Firestoreを利用した設計についての質問です。

Webアプリを利用するユーザーがアカウントをもち、そのアカウント情報にnameが存在しその値をユニークにしたい場合の設計方針についてです。

/users/{id}

ユーザー情報の実データを上記のようなパス内で保持しfieldにnameがある想定です。

このような場合にnameをユニークにする方針として以下の2通りがあると思っています。

  1. アカウント作成時に、usersコレクション内のname fieldに既に同じnameが存在するか確認する(単一フィールドに対する検索クエリの実行)。存在しない場合のみ会員登録処理を進める。
  2. nameをキーとする別のコレクションを作成する。アカウント作成時にそのコレクションにて既に同じキーのnameが存在するか確認する。存在しない場合のみ会員登録処理を進み、成功した場合にusersコレクションとnameコレクションの両方にバッチ処理で書き込みを実施する

現状nameのユニークをチェックするのみですが、今後アカウント作成時に他の要素もユニークにする必要がある場合、「1」の方針をとっている場合結局「2」の方針へ移行することになると想定しています。
(複数フィールドの検索は素のFirestoreでは提供されていない、且つ他のサービスを利用して実現できるとしても解決方法がやや複雑に感じる?ので(あくまで所感です))

従って「2」の方針をするのが妥当と思っているのですが、どうでしょうか?

  • いや、大抵は「1」で事足りる。
  • 「〜」という理由もあって「2」にすべきだ。
  • 他の手段を検討すべきだ。

などのご意見あれば伺いたく質問させて頂きました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問