Bird
Raised Fist0
Firebasecloud~5 mins

Firestore trigger functions in Firebase - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a Firestore trigger function?
A Firestore trigger function is a special cloud function that runs automatically when data changes in a Firestore database, like when a document is created, updated, or deleted.
Click to reveal answer
beginner
Name the three main Firestore trigger event types.
The three main Firestore trigger event types are:
1. onCreate - runs when a new document is added.
2. onUpdate - runs when an existing document is changed.
3. onDelete - runs when a document is removed.
Click to reveal answer
intermediate
How do you access the changed data in an onUpdate Firestore trigger?
In an onUpdate trigger, you get two snapshots: before and after. Use change.before.data() to see old data and change.after.data() to see new data.
Click to reveal answer
intermediate
Why use Firestore trigger functions instead of client-side code?
Trigger functions run on the server, so they are secure and reliable. They can enforce rules, update other data, or send notifications without depending on the user's device or app.
Click to reveal answer
beginner
What is the syntax to create a Firestore onCreate trigger for a collection named 'users'?
Use: <br><code>exports.userCreated = functions.firestore.document('users/{userId}').onCreate((snap, context) =&gt; {<br>  const newData = snap.data();<br>  // your code here<br>});</code>
Click to reveal answer
Which Firestore trigger runs when a document is deleted?
AonRemove
BonUpdate
ConCreate
DonDelete
In an onUpdate trigger, how do you get the new data?
Achange.before.data()
Bchange.after.data()
Csnap.data()
Dcontext.data()
What does the placeholder {userId} represent in the document path 'users/{userId}'?
AA variable document ID
BA field name
CA collection name
DA fixed document ID
Why are Firestore trigger functions considered secure?
AThey run on the server and can't be bypassed by users
BThey run on the client device
CThey require user permission every time
DThey only run once
Which event type would you use to send a welcome email when a new user document is created?
AonUpdate
BonDelete
ConCreate
DonWrite
Explain how Firestore trigger functions work and give an example of when you might use one.
Think about what happens when data changes in your app and how triggers can help.
You got /3 concepts.
    Describe the difference between onCreate and onUpdate triggers in Firestore.
    Focus on when each trigger activates and what data you get.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does a Firestore trigger function do in a Firebase project?
      easy
      A. Deletes Firestore data without any event
      B. Manually updates Firestore data when called
      C. Creates a new Firestore database
      D. Automatically runs code when data changes in Firestore

      Solution

      1. Step 1: Understand Firestore triggers

        Firestore triggers are special functions that run automatically when data changes in Firestore.
      2. Step 2: Identify the trigger's purpose

        They help keep your app reactive by running code on create, update, or delete events without manual calls.
      3. Final Answer:

        Automatically runs code when data changes in Firestore -> Option D
      4. Quick Check:

        Firestore triggers = automatic code run on data change [OK]
      Hint: Triggers run code automatically on Firestore data changes [OK]
      Common Mistakes:
      • Thinking triggers run manually
      • Confusing triggers with database creation
      • Assuming triggers delete data without events
      2. Which of the following is the correct syntax to create a Firestore trigger for document creation in Node.js Firebase Functions?
      easy
      A. exports.onCreate = functions.firestore.document('users').onCreate((snap, context) => { });
      B. exports.onCreate = functions.firestore.document('users/{userId}').onCreate((snap, context) => { });
      C. functions.firestore.onCreate('users/{userId}', (snap, context) => { });
      D. functions.firestore.document('users/{userId}').create((snap, context) => { });

      Solution

      1. Step 1: Recall Firestore trigger syntax

        The correct syntax uses exports, functions.firestore.document(path).onCreate(handler).
      2. Step 2: Match syntax to options

        exports.onCreate = functions.firestore.document('users/{userId}').onCreate((snap, context) => { }); matches this pattern exactly with document path and onCreate event.
      3. Final Answer:

        exports.onCreate = functions.firestore.document('users/{userId}').onCreate((snap, context) => { }); -> Option B
      4. Quick Check:

        Correct Firestore onCreate syntax = exports.onCreate = functions.firestore.document('users/{userId}').onCreate((snap, context) => { }); [OK]
      Hint: Use exports with document(path).onCreate(handler) for create triggers [OK]
      Common Mistakes:
      • Missing exports keyword
      • Using onCreate directly on firestore without document
      • Wrong method name like create instead of onCreate
      3. Given this Firestore trigger function, what will be logged when a document is updated?
      exports.logUpdate = functions.firestore.document('posts/{postId}').onUpdate((change, context) => {
        const before = change.before.data();
        const after = change.after.data();
        console.log('Title before:', before.title);
        console.log('Title after:', after.title);
      });
      medium
      A. Logs the title before and after the update
      B. Logs only the new title after update
      C. Logs only the old title before update
      D. Throws an error because change.before is undefined

      Solution

      1. Step 1: Understand onUpdate trigger parameters

        The onUpdate trigger receives a change object with before and after snapshots of the document.
      2. Step 2: Analyze the console logs

        The code logs before.title and after.title, so both old and new titles are printed.
      3. Final Answer:

        Logs the title before and after the update -> Option A
      4. Quick Check:

        onUpdate logs before and after data [OK]
      Hint: onUpdate provides before and after data snapshots [OK]
      Common Mistakes:
      • Assuming only new data is available
      • Thinking change.before is undefined
      • Confusing onUpdate with onCreate
      4. Identify the error in this Firestore trigger function code:
      exports.deleteUser = functions.firestore.document('users/{userId}').onDelete((snap, context) => {
        const userData = snap.data;
        console.log('Deleted user:', userData.name);
      });
      medium
      A. Missing async keyword for the function
      B. onDelete trigger cannot be used on 'users/{userId}' path
      C. snap.data should be snap.data() to get document data
      D. context parameter is not allowed in onDelete triggers

      Solution

      1. Step 1: Check how to access document data

        Firestore document snapshot data is accessed by calling snap.data(), not snap.data property.
      2. Step 2: Identify the error in code

        The code uses snap.data without parentheses, causing undefined userData and runtime error.
      3. Final Answer:

        snap.data should be snap.data() to get document data -> Option C
      4. Quick Check:

        Use snap.data() method to access document data [OK]
      Hint: Use snap.data() method, not snap.data property [OK]
      Common Mistakes:
      • Using snap.data instead of snap.data()
      • Thinking onDelete can't use context parameter
      • Assuming async is always required
      5. You want to create a Firestore trigger that updates a user's profile summary whenever their profile document changes. Which approach correctly ensures the trigger only runs when the 'bio' field changes, avoiding infinite loops?
      hard
      A. Use onUpdate trigger and compare change.before.data().bio with change.after.data().bio before updating
      B. Use onWrite trigger and update the document unconditionally inside the trigger
      C. Use onCreate trigger to update bio field after document creation
      D. Use onUpdate trigger and update the document without checking any field changes

      Solution

      1. Step 1: Choose the right trigger for updates

        onUpdate triggers run on any document update, suitable for detecting changes.
      2. Step 2: Prevent infinite loops by checking field changes

        Compare bio field before and after update; only proceed if bio changed to avoid recursive updates.
      3. Final Answer:

        Use onUpdate trigger and compare change.before.data().bio with change.after.data().bio before updating -> Option A
      4. Quick Check:

        Check field changes in onUpdate to avoid loops [OK]
      Hint: Compare before and after fields in onUpdate to avoid loops [OK]
      Common Mistakes:
      • Using onWrite and updating unconditionally causing loops
      • Using onCreate which triggers only once
      • Not checking field changes before updating
      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