Bird
Raised Fist0
Firebasecloud~5 mins

Data validation rules in Firebase - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What are Firebase data validation rules?
Firebase data validation rules are conditions set to check if data being written to the database is correct and safe before saving it.
Click to reveal answer
beginner
Why is data validation important in Firebase?
Data validation helps prevent bad or harmful data from entering the database, keeping the app reliable and secure.
Click to reveal answer
intermediate
How do you write a simple Firebase rule to allow only strings for a field called 'name'?
Use the rule:
"name": { ".validate": "newData.isString()" }
This checks that the new data for 'name' is a string.
Click to reveal answer
beginner
What does newData.exists() check in Firebase rules?
It checks if the new data being written actually exists (is not null or deleted).
Click to reveal answer
intermediate
How can you restrict a number field 'age' to be between 0 and 120 in Firebase rules?
Use:
"age": { ".validate": "newData.isNumber() && newData.val() >= 0 && newData.val() <= 120" }
Click to reveal answer
What does Firebase data validation rules do?
ADelete old data from the database
BAutomatically fix errors in data
CCheck data before saving to ensure it meets conditions
DEncrypt data in the database
Which function checks if new data is a string in Firebase rules?
AnewData.isBoolean()
BnewData.exists()
CnewData.isNumber()
DnewData.isString()
How do you ensure a field 'score' is a number greater than or equal to zero?
A".validate": "newData.isNumber() && newData.val() >= 0"
B".validate": "newData.isString() && newData.val() >= 0"
C".validate": "newData.exists()"
D".validate": "newData.isBoolean()"
What happens if data does not pass Firebase validation rules?
AThe data is saved anyway
BThe data write is rejected
CThe data is saved but marked invalid
DThe database crashes
Which of these is NOT a valid Firebase validation function?
AnewData.isDate()
BnewData.isString()
CnewData.isNumber()
DnewData.exists()
Explain how Firebase data validation rules help keep your database safe and reliable.
Think about what happens if wrong data is saved.
You got /3 concepts.
    Describe how to write a Firebase rule that only allows numbers between 1 and 100 for a field called 'rating'.
    Use logical AND to combine checks.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of Firebase data validation rules?
      easy
      A. To ensure data is correct and secure before saving
      B. To speed up database queries
      C. To create user interfaces automatically
      D. To backup data to another server

      Solution

      1. Step 1: Understand what data validation means

        Data validation checks if data meets certain conditions before saving.
      2. Step 2: Identify the role of Firebase rules

        Firebase rules check data type, format, and permissions to keep data safe and clean.
      3. Final Answer:

        To ensure data is correct and secure before saving -> Option A
      4. Quick Check:

        Data validation = correctness and security [OK]
      Hint: Validation means checking data before saving [OK]
      Common Mistakes:
      • Thinking rules speed up queries
      • Confusing validation with UI creation
      • Assuming rules backup data
      2. Which of the following is the correct syntax to allow only string data for a field name in Firebase rules?
      easy
      A. "name": { ".validate": "newData.isString()" }
      B. "name": { ".validate": "newData.isNumber()" }
      C. "name": { ".validate": "newData.exists()" }
      D. "name": { ".validate": "newData.val() > 0" }

      Solution

      1. Step 1: Identify the method to check string type

        Firebase uses newData.isString() to check if data is a string.
      2. Step 2: Match the syntax with the correct method

        "name": { ".validate": "newData.isString()" } uses newData.isString(), which is correct for string validation.
      3. Final Answer:

        "name": { ".validate": "newData.isString()" } -> Option A
      4. Quick Check:

        Check string type = newData.isString() [OK]
      Hint: Use newData.isString() to validate strings [OK]
      Common Mistakes:
      • Using isNumber() for strings
      • Using exists() which only checks presence
      • Using val() > 0 which is for numbers
      3. Given this Firebase rule snippet:
      {
        "rules": {
          "users": {
            "$uid": {
              ".write": "$uid === auth.uid",
              ".validate": "newData.hasChildren(['name', 'age']) && newData.child('age').isNumber() && newData.child('age').val() >= 18"
            }
          }
        }
      }

      What happens if a user tries to write data with age set to 16?
      medium
      A. Write is denied because name is missing
      B. Write is allowed because age is a number
      C. Write is denied because age is less than 18
      D. Write is allowed regardless of age

      Solution

      1. Step 1: Analyze the validation condition for age

        The rule requires age to be a number and at least 18.
      2. Step 2: Check the given age value

        The user tries to write age = 16, which is less than 18, so validation fails.
      3. Final Answer:

        Write is denied because age is less than 18 -> Option C
      4. Quick Check:

        Age must be ≥ 18 = deny if 16 [OK]
      Hint: Check numeric conditions carefully in validation [OK]
      Common Mistakes:
      • Ignoring the minimum age check
      • Assuming any number is allowed
      • Confusing write and validate rules
      4. You wrote this Firebase rule to allow only emails ending with '@example.com':
      {
        ".validate": "newData.isString() && newData.val().matches('.*@example.com$')"
      }

      But users with emails like 'user@exampleacom' are still allowed. What is the error?
      medium
      A. matches() does not work in Firebase rules
      B. The regex pattern is incorrect; it should escape the dot
      C. newData.isString() is missing
      D. The rule should use newData.exists() instead

      Solution

      1. Step 1: Review the regex pattern used

        The pattern '.*@example.com$' treats '.' as any character, not a literal dot.
      2. Step 2: Correct the regex to escape the dot

        It should be '.*@example\.com$' to match the literal '.com' ending.
      3. Final Answer:

        The regex pattern is incorrect; it should escape the dot -> Option B
      4. Quick Check:

        Escape dot in regex = \. [OK]
      Hint: Escape dots in regex with double backslash \ [OK]
      Common Mistakes:
      • Not escaping '.' in regex
      • Thinking matches() is unsupported
      • Confusing isString() with exists()
      5. You want to write a Firebase validation rule for a posts node where each post must have a title (string, max 100 chars) and tags (array of strings, max 5 tags). Which rule correctly enforces this?
      hard
      A. "posts": { "$postid": { ".validate": "newData.hasChildren(['title', 'tags']) && newData.child('title').isString() && newData.child('title').val().length() <= 100 && newData.child('tags').numChildren() <= 5 && newData.child('tags').val().every(tag => typeof tag === 'string')" } }
      B. "posts": { "$postid": { ".validate": "newData.hasChildren(['title', 'tags']) && newData.child('title').isString() && newData.child('title').val().length() <= 100 && newData.child('tags').numChildren() <= 5 && newData.child('tags').val().forEach(tag => typeof tag === 'string')" } }
      C. "posts": { "$postid": { ".validate": "newData.hasChildren(['title', 'tags']) && newData.child('title').isString() && newData.child('title').val().length() <= 100 && newData.child('tags').numChildren() <= 5 && newData.child('tags').val().every(tag => tag.isString())" } }
      D. "posts": { "$postid": { ".validate": "newData.hasChildren(['title', 'tags']) && newData.child('title').isString() && newData.child('title').val().length() <= 100 && newData.child('tags').numChildren() <= 5" } }

      Solution

      1. Step 1: Check the available Firebase validation functions

        Firebase rules do not support JavaScript array methods like every() or typeof inside rules.
      2. Step 2: Identify the valid checks

        We can check if tags is an array and its length, but cannot check each tag's type in rules.
      3. Final Answer:

        "posts": { "$postid": { ".validate": "newData.hasChildren(['title', 'tags']) && newData.child('title').isString() && newData.child('title').val().length() <= 100 && newData.child('tags').numChildren() <= 5" } } -> Option D
      4. Quick Check:

        Use only supported rule functions, no JS methods [OK]
      Hint: Firebase rules don't support JS array methods like every() [OK]
      Common Mistakes:
      • Using JavaScript methods inside rules
      • Trying to check each array element's type
      • Assuming isArray() checks element types
      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