Bird
Raised Fist0
Firebasecloud~30 mins

User profile data in Firebase - Mini Project: Build & Apply

Choose your learning style10 modes available
User profile data
📖 Scenario: You are building a simple user profile storage system using Firebase Realtime Database. Each user has a unique ID, a name, and an email address.
🎯 Goal: Create a Firebase Realtime Database structure to store user profiles, add a configuration variable for the default user role, write the logic to add a new user profile, and finalize the database rules to secure the data.
📋 What You'll Learn
Create a dictionary called users with two user profiles with exact IDs and data
Add a variable called defaultRole set to "user"
Write a function called addUserProfile that takes userId, name, and email and adds a new user with the defaultRole
Add Firebase Realtime Database rules to allow authenticated users to read and write their own profile only
💡 Why This Matters
🌍 Real World
Storing and managing user profiles securely is essential for many apps and websites. Firebase Realtime Database is a popular backend service for this.
💼 Career
Understanding how to structure user data and secure it with Firebase rules is a key skill for cloud developers and backend engineers.
Progress0 / 4 steps
1
Create initial user profiles
Create a dictionary called users with these exact entries: "user1" with {"name": "Alice", "email": "alice@example.com"} and "user2" with {"name": "Bob", "email": "bob@example.com"}.
Firebase
Hint

Use a dictionary with user IDs as keys and dictionaries with name and email as values.

2
Add default user role configuration
Add a variable called defaultRole and set it to the string "user".
Firebase
Hint

Just create a variable with the exact name and value.

3
Write function to add user profile
Write a function called addUserProfile that takes parameters userId, name, and email. Inside the function, add a new entry to the users dictionary with the given userId and a dictionary containing name, email, and role set to defaultRole.
Firebase
Hint

Define a function with the exact name and parameters, then assign the new user dictionary to users[userId].

4
Add Firebase Realtime Database security rules
Add Firebase Realtime Database rules as a JSON string variable called databaseRules that allows authenticated users to read and write only their own profile under /users/<userId>. Use auth != null and auth.uid == userId conditions.
Firebase
Hint

Use a JSON string with rules for /users/$userId path and conditions for read and write.

Practice

(1/5)
1. What is the main purpose of storing user profile data in Firebase Firestore?
easy
A. To host static website files
B. To run server-side scripts automatically
C. To send emails to users
D. To save personal information for each user securely

Solution

  1. Step 1: Understand user profile data purpose

    User profile data holds personal details like name and email for each user.
  2. Step 2: Identify Firebase Firestore role

    Firestore stores this data securely and allows easy access and updates.
  3. Final Answer:

    To save personal information for each user securely -> Option D
  4. Quick Check:

    User profile data = personal info storage [OK]
Hint: User profiles store personal info, not run scripts or host files [OK]
Common Mistakes:
  • Confusing Firestore with hosting or email services
  • Thinking Firestore runs backend code automatically
  • Assuming user profiles are for sending emails
2. Which Firebase Firestore syntax correctly creates a document for a user profile with ID 'user123'?
easy
A. db.collection('users').doc('user123').set({name: 'Alice'})
B. db.users('user123').add({name: 'Alice'})
C. db.collection('users').add('user123', {name: 'Alice'})
D. db.doc('users/user123').create({name: 'Alice'})

Solution

  1. Step 1: Review Firestore document creation syntax

    Use collection('name').doc('id').set(data) to create or overwrite a document.
  2. Step 2: Match syntax with options

    db.collection('users').doc('user123').set({name: 'Alice'}) matches correct syntax: collection, doc, then set with data object.
  3. Final Answer:

    db.collection('users').doc('user123').set({name: 'Alice'}) -> Option A
  4. Quick Check:

    Correct Firestore doc creation = db.collection('users').doc('user123').set({name: 'Alice'}) [OK]
Hint: Use collection().doc().set() to create user profile docs [OK]
Common Mistakes:
  • Using add() with document ID specified
  • Wrong method names like create() instead of set()
  • Incorrect chaining of methods
3. Given this code snippet, what will be the output if the user document does not exist?
const docRef = db.collection('users').doc('user999');
docRef.get().then(doc => {
  if (doc.exists) {
    console.log(doc.data().name);
  } else {
    console.log('No user found');
  }
});
medium
A. No user found
B. undefined
C. Error: Document not found
D. null

Solution

  1. Step 1: Understand doc.exists property

    doc.exists is false if document does not exist in Firestore.
  2. Step 2: Follow code logic for missing document

    If doc.exists is false, code logs 'No user found'.
  3. Final Answer:

    No user found -> Option A
  4. Quick Check:

    Missing doc triggers else block = 'No user found' [OK]
Hint: Check doc.exists before accessing data to avoid errors [OK]
Common Mistakes:
  • Assuming doc.data() returns null or undefined
  • Expecting an error instead of else block output
  • Ignoring the else condition
4. Identify the error in this Firebase Firestore code to update a user's profile name:
db.collection('users').doc('user123').update({
  username: 'Bob'
});
medium
A. update() cannot be used to change existing fields
B. Missing await or then to handle promise
C. Field name should be 'name' not 'username'
D. Document ID 'user123' must be a number

Solution

  1. Step 1: Check Firestore update method usage

    update() returns a promise and should be handled with await or then.
  2. Step 2: Identify missing promise handling

    Code does not handle promise, which can cause silent failures.
  3. Final Answer:

    Missing await or then to handle promise -> Option B
  4. Quick Check:

    Firestore update returns promise, must handle it [OK]
Hint: Always handle promises with await or then in Firestore calls [OK]
Common Mistakes:
  • Thinking update() cannot change fields
  • Assuming field names must be fixed
  • Believing document IDs must be numeric
5. You want to store user profiles with optional phone numbers. Which Firestore data structure best handles missing phone numbers without errors?
hard
A. Set phone number field to empty string if missing
B. Always set phone number field to null
C. Include phone number field only if user provides it
D. Create a separate collection for phone numbers

Solution

  1. Step 1: Understand optional fields in Firestore

    Firestore allows documents to omit fields that are not provided.
  2. Step 2: Choose best practice for optional data

    Including the phone number field only when available avoids storing empty or null values and reduces confusion.
  3. Final Answer:

    Include phone number field only if user provides it -> Option C
  4. Quick Check:

    Omit optional fields if missing to keep data clean [OK]
Hint: Omit optional fields instead of storing empty or null values [OK]
Common Mistakes:
  • Storing empty strings which can confuse queries
  • Using null values that may cause unexpected behavior
  • Overcomplicating with separate collections for simple optional data
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard