Bird
Raised Fist0
Firebasecloud~5 mins

User profile data in Firebase - Commands & Configuration

Choose your learning style10 modes available
Introduction
User profile data stores personal information about users in your app. It helps you keep track of user details like name, email, and preferences securely and accessibly.
When you want to save a user's name and email after they sign up.
When you need to update user preferences like theme or notification settings.
When you want to display user information on their profile page.
When you want to keep user data synced across devices automatically.
When you want to secure user data with Firebase's built-in rules.
Config File - firestore.rules
firestore.rules
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow read, write: if request.auth != null && request.auth.uid == userId;
    }
  }
}

This security rule file controls access to user profile data in Firestore.

The match /users/{userId} block means rules apply to documents in the 'users' collection.

It allows read and write only if the user is signed in and their user ID matches the document ID, protecting user data privacy.

Commands
Initializes Firestore in your Firebase project to store user profile data.
Terminal
firebase init firestore
Expected OutputExpected
=== Firestore Setup === Firestore rules and indexes files have been created. āœ” Firestore initialization complete.
Deploys Firestore rules and indexes to Firebase to enforce security on user profile data.
Terminal
firebase deploy --only firestore
Expected OutputExpected
=== Deploying to 'your-project-id'... āœ” Deploy complete! Project Console: https://console.firebase.google.com/project/your-project-id/overview
→
--only firestore - Deploys only Firestore related files, avoiding other services.
Creates a user profile document with ID 'user123' containing name and email fields.
Terminal
firebase firestore:documents create users/user123 --data '{"name":"Alice","email":"alice@example.com"}'
Expected OutputExpected
Document users/user123 created successfully.
Retrieves the user profile data for user with ID 'user123' to verify it was saved correctly.
Terminal
firebase firestore:documents get users/user123
Expected OutputExpected
{ "name": "Alice", "email": "alice@example.com" }
Key Concept

If you remember nothing else from this pattern, remember: secure user profile data by matching document IDs to authenticated user IDs in Firestore rules.

Common Mistakes
Allowing open read/write access to all user profile documents.
This exposes all user data to anyone, risking privacy and security breaches.
Use Firestore rules to restrict access so users can only read and write their own profile documents.
Using different document IDs than the user's authentication ID.
It makes it hard to enforce security rules that rely on matching user IDs, causing access errors.
Use the authenticated user's UID as the document ID for their profile data.
Summary
Initialize Firestore in your Firebase project to store user profile data.
Write and deploy Firestore security rules to restrict access to each user's own data.
Create and retrieve user profile documents using the user's authentication ID as the document ID.

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