2017-11-15 6 views
0

Firebaseの新しいFirestoreデータベースを使いこなしていて、ユニークなユーザ名(または一意の子ノード)を実行する効率的な方法があるのだろうかと思っていました。Firebase FirestoreでユニークなuserIdsを実施する

私は電子メール/パスワード認証を使用しますが、ユーザーはTwitterなどのユニークなハンドルを作成できます。

リアルタイムデータベースでは、これをトランザクションと複数ノード構造で実現できました。

-users 
    -uid1234: 
     -username: ryan 

-usernames: 
    -ryan: uid1234 

私はFirestoreにユーザー名としての文書を使用して、余分なusernamesノードなしにこれを行うことも可能であることを考えていました。

+0

「ユニークユーザーネーム」の理由を聞かれますか?あなたは同じ名前の2人のユーザーがいないようにしたいと考えていますか? IMHOユーザーIDは、ユーザー名ではなくuserIDでなければなりません。 –

+0

ご質問が不明な場合は申し訳ありません。私はまだ認証で生成されたFirebaseユーザIDを使用したいが、ユーザがTwitterやInstagramのようなユニークな "ハンドル"を作成できるようにしたい。 –

+0

実際の質問は次のとおりです。サーバー側のルールでのみ一意のユーザー名を強制する方法。ユーザー名のマッピングが存在するかどうかをクライアントでチェックするのは安全ではありません。あなたがすでにこのための解決策を持っていれば、投稿してもいいですか? – crazypeter

答えて

-1

よく私の事、ユーザーは、私が

我々はユーザーこれを取得することができ、それは前にしかし、私はあなたと一緒に考えてみましょうことはなかった敗走から直接頬にその可能なすべてのユーザー

function getUserNames(){ 
    db.ref('users').on('value' , function(data){ 
    data.forEach(function(users){ 
     var UserNames = users.val().username; 
     UserNameHolder.push(UserNames); 
    }) 
    }); 
} 

し、我々はできますサインアップすることができますボタン頬がユーザー名かのかに、その後パブリック変数、配列

const UserNameHolder = [] 

にユーザー名を入れて、認証機能や戻りはnullを返し

SingUpSubmit.addEventListener('click' , function(){ 

    // chek if username is unieq 
    if (username === UserNameHolder) { 
     console.log('cant log in'); 
     return; 
    }else{ 
     // your auth function 
     UserAuth(); 
    } 

}); 
+0

ご質問が不明な場合は申し訳ありません。私は既にRealtimeデータベースを使ったソリューションを持っています。新しいFirestoreデータベースでより効率的な方法があるのか​​どうかは疑問です。 –

+0

また、あなたのソリューションはクライアント側であり、悪質なクライアントがJSコードを削除するのを防ぎませんし、依然として既存のユーザー名を使用します。 – crazypeter

関連する問題