0

私は/users/<uid>Firebaseを使用して新規ユーザーのカスタムURLを作成する方法は?

は、しかし、私はまた、各ユーザーを持つようにしたいとFirebaseの下に新しいユーザーを作成し、保存しリアクト/ Reduxのアプリケーションを持っている場合は、元の/users/john-daviddomain.com/users/john-davidまたはdomain.com/users/john-david-1343のように、自分のプロフィールページ用のカスタムURLを持っています既に行われています)

これを行うにはどのような方法が最適ですか?

私の問題は、Firebaseの/users/<firstname-lastname-hash>の下にユーザーを格納しようとしていたことですが、uid以外のものの下に格納するのは悪い考えです(これは本当ですか?)。

しかし、また、私は重複を占める新しいユーザ名を作成しながら、その後、どのように私は、Firebaseで/users/<uid>を維持しないことをやる、と。ここdomain.com/users/john-david-123

を訪問することは、いくつかのサンプルであるときにユーザが存在するかどうかを検索していない場合新しいユーザーが一般的に

export function saveUser (data, user) { 
    let username = data.username 
    return ref.child(`users/${user.uid}/info`) 
    .set({ 
     email: user.email, 
     firstname: data.firstName, 
     lastname: data.lastName, 
     admin: false, 
     // for /users/<username> 
     username: username, 
     uid: user.uid 
    }) 
    .then(() => user) 
} 

答えて

2

をFirebaseするために保存されますどこのコード我々はあなたがそれを表示するつもりかFirebaseにデータを格納すべきと言うと、あなたはあなたとしてUIDを使用しなければならないという特段の理由はありませんユーザーを格納する際の主キー。何がしたいかもしれないことである:uidフィールドを含む/users/${username}

  1. ストアのユーザーデータ、あなたが述べたように、。
  2. ユーザーがサインアップすると、firstname-lastnameスラッグが生成され、/uids/${uid} = usernameに保存されます。

このようにして、UIDからユーザーへ、またはその逆に簡単にマッピングできます。ここでの欠点は、ユーザ名をデータ構造に焼いてしまえば、ユーザ名を変更させないようにすることです。

また、私の提案を逆にして/usernames/${username} = uid/users/${uid}を保存することもできます。これにより、ユーザー名の変更が容易になりますが、ユーザー名からデータに移動するために追加の検索が必要になります。

+0

私は自分自身をヒットしたいので簡単です。偉大な答えと私は一緒に行ってしまった。 –

関連する問題