title: Creating Unique Usernames with firebase (React/Javascript)
body: <p>What i'am attempting to do is create new users with Firebase authentication and create their own document entry within Firestore. So far everything went well until i wanted to create unique usersnames. What is the most optimal way of going about doing this? should i create an array of all the users to cross-reference upon each sign up, or perhaps create a collection dedicated to Usernames with their email attached (which you can see i did in the second call to Firebase)</p>
  
  <p>Firebase auth takes in email and passwords only so thats out of the question, or at least from what i gather.</p>
  
  <pre><code>export const signInUser = async ({ name, email, password }) =&gt; {
    try {
      await firebase
        .auth()
        .createUserWithEmailAndPassword(email, password)
        .then(cred =&gt; {
          return firebase
            .firestore()
            .collection("users")
            .doc(cred.user.uid)
            .set({
              name: name,
              email: email,
              friends: []
            });
        });
      await firebase
        .firestore()
        .collection("usernames")
        .doc(name)
        .set({ username: name, email: email });
      firebase.auth().currentUser.updateProfile({
        displayName: name
      });
  
      return {};
    } catch (error) {
      switch (error.code) {
        case "auth/email-already-in-use":
          return {
            error: "E-mail already in use."
          };
        case "auth/invalid-email":
          return {
            error: "Invalid e-mail address format."
          };
        case "auth/weak-password":
          return {
            error: "Password is too weak."
          };
        case "auth/too-many-requests":
          return {
            error: "Too many request. Try again in a minute."
          };
        default:
          return {
            error: "Check your internet connection."
          };
      }
    }
  };
  
  </code></pre>