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

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

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

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

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1236閲覧

Cloud Firestoreで自前のユニークユーザーIDを作成する

退会済みユーザー

退会済みユーザー

総合スコア0

Firebase

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

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2017/11/10 03:20

###前提・実現したいこと
Swift4でアプリを製作しています。
アプリ内でIDによるユーザー検索を実装するので、ユーザーに登録時にFirebase Authのuidとは別に、ユニークユーザーIDを設定してもらうようにしたいと思っています。

そこで、登録時にまず、入力されたユーザーIDがすでに使用されているか、全てのdocumentをチェックして使用されてなかった場合には登録できるようにしたいです。

現状では以下のような仕組みを考えています。
しかし、このコードだと通信のエラーなど、存在しないという理由以外で登録処理が走ってしまうのではないかと思っています。

そもそもこの認識は間違っていて、このコードで大丈夫なのであれば、そう教えていただけるとありがたいです。
ユーザーIDが被ってしまうと大変なので、確実に全てのdocumentをチェックして判定をする必要があります。

よろしくお願いいたします。

###該当のソースコード

swift

1 2let docRef = db.collection("users").whereField("uniqueUsername", isEqualTo: typedID) 3 4docRef.getDocument { (document, error) in 5 if let document = document { 6 // 登録処理をブロック 7 } else { 8 print("Document does not exist") 9 // 登録処理を許可 10 } 11}

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

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

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

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

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

guest

回答1

0

ベストアンサー

大筋は書かれている方法で良いかと思います.
通信不可時には snapshot.metadata.fromCache が true か false かで判定することができます.
Enable Offline Data > Listen to offline data

投稿2017/11/10 05:15

編集2017/11/10 09:20
Yatima

総合スコア1159

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

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

退会済みユーザー

退会済みユーザー

2017/11/10 08:25

ご回答いただきありがとうございます。ユーザー検索を簡単にするために、twitterやinstagramのように@〇〇◯◯◯というユーザーIDをつくりたいです。私の認識ですとUIDは自動生成されるので、自分で設定はできないと認識しています。前々からちらほらとAuthのUIDに紐付けて管理するということを見かけてはいたのですが、その方法がわからずにおりました。簡単にで構いませんので、ご教授いただけますと幸いです。よろしくお願いいたします。
Yatima

2017/11/10 08:32

なるほど,そういうニュアンスでしたか.   全く難しい話ではないですよ>紐付け データベース内に保存する,というだけです. 例えばドキュメントの名前をAuthのUIDにして,その内部に読みやすいユーザIDを保持する,などでしょうか.   ちなみに,Auth内に追加情報を入力することは,少なくとも今のところできないようです.
退会済みユーザー

退会済みユーザー

2017/11/10 08:38

ご回答ありがとうございます。ドキュメントの名前をAuthのUIDにして,その内部に読みやすいユーザIDを保持することには挑戦しているのですが, それをいかに他のドキュメント内のIDと被らないようにするかということに苦戦しています... 最初に質問させていただいたのは、まさにこの部分です。わかりにくい質問となってしまい申し訳ありませんが、よろしくお願いします。
Yatima

2017/11/10 08:48

ああ,なるほど了解です.   自分ならばむしろ重複を認める方向で作っちゃいますかね. 実際重複した場合は,アイコンやその他プロフィールで見分けてもらう,とか, あるいはメンション時は友達優先にすると使い勝手も良くなるかな,とか.   いかがでしょう?
退会済みユーザー

退会済みユーザー

2017/11/10 08:53

度々のご回答ありがとうございます。 やはり独自のIDを実装したいです... 何か有効な手段はありますでしょうか??? わがままで申し訳ないですが、よろしくお願いします。
Yatima

2017/11/10 09:21

すみません,自分もソースコードを読み違えていました. 回答を改めましたのでご確認お願いします.
退会済みユーザー

退会済みユーザー

2017/11/10 09:23

素早いご対応をいただきありがとうございます。ご提示いただいた方法で試してみます。助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問