質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
87.20%
Firebase

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

Next.js

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

Cloud Firestore

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

受付中

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

bbdd
bbdd

総合スコア43

Firebase

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

Next.js

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

Cloud Firestore

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

0回答

-1評価

0クリップ

118閲覧

投稿2022/05/13 16:51

前提

  • 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」にすべきだ。
  • 他の手段を検討すべきだ。

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Firebase

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

Next.js

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

Cloud Firestore

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