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

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

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

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

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Q&A

解決済

1回答

418閲覧

[iOS]Firebaseのデータ構造について

bbdd

総合スコア43

Firebase

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

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

0グッド

2クリップ

投稿2018/01/17 15:25

###前提

twitterのようなiOSアプリを作成しており、バックエンドにFirebaseを使用しています。
ユーザーが存在し、投稿機能のある、いわゆるソーシャルアプリです。

###実現したいこと

twitterのようなユーザーの検索機能を実装をしたいと思っています。

###疑問点

ユーザー検索機能を実装するに際して、Firebase上にある現状のデータ構造を修正する必要があると考えています。そこで、自分は以下に示すようなデータ構造に修正しようと思っているのですが、よりよい修正方法があるかお聞きしたいです。

まず、現状のデータ構造を示します。
現状のデータ構造

 posts ツリーはその配下に固有idをもち、その中にそれぞれの投稿情報が格納されています。
usersツリーはその配下に固有idをもち、その中にそれぞれのユーザー情報が格納されています。(ログイン方法はtwitter,facebook, github, mailを検討しています)

次に、現在考えているデータ構造です。
修正されたもの

修正点は2点です。
①: ユーザーデータの中にuserIDを格納するようにする。(ログイン時にユーザーに決めてもらう。重複がないかチェックし、固有の値とする。)
②:userIDsツリーを作成し、ユーザーのID:ユーザー情報をもつツリーのキー
という情報を格納する。

検索時にはuserIDsの中を検索し、該当するユーザーIDがあればそのユーザー情報を表示しようと思っています。(部分検索(tを入力するとtを含むユーザーID一覧が表示される)ができれば良いが、現状そのようなAPIはなさそうなので、検索結果としては、完全一致の1件のみか検索結果なし、の2
パターンを考えています。)

以上のような仕様を検討しているのですが、より良い解決策がありましたら、ぜひ教えていただきたいです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

少なくとも2つは策があります.
一つ目は前方一致検索について,二つ目はそもそもdb選定について.

前者について.
並べ替えた後にフィルタリングすることで,前方一致検索ができます.
例えば"hoge"で始まるIDであれば,"hoge"から"hogf"(eの次はf)までを取得した後に,"hogf"を除けばいいでしょう.
ただし課金には注意しましょう.

後者について.
現在Firebaseでは,Realtime DatabaseよりCloud Firestoreに注力しているようですので,後先のことを考えると今のうちに移行しておいても良いかもしれません.
上記のような前方一致検索にしても,Cloud Firestoreであれば並べ替え不要ですし,最後の「"hogf"を除く」作業も不要な状態で取得できます.

投稿2018/01/17 20:00

Yatima

総合スコア1159

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

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

bbdd

2018/01/18 11:41

早速の解答ありがとうございます???? Cloud firestoreへの移行を検討して開発を進めていこうかなと思っております???? 改めてありがとうございました????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問