Bird
Raised Fist0
Firebasecloud~10 mins

Server timestamps in Firebase - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to set a Firestore field to the server timestamp.

Firebase
docRef.set({ createdAt: [1] })
Drag options to blanks, or click blank then click option'
ATimestamp.now()
BDate.now()
Cnew Date()
Dfirebase.firestore.FieldValue.serverTimestamp()
Attempts:
3 left
💡 Hint
Common Mistakes
Using client time like Date.now() instead of server timestamp.
Using new Date() which is client-side time.
2fill in blank
medium

Complete the code to update a Firestore document's 'updatedAt' field with the server timestamp.

Firebase
docRef.update({ updatedAt: [1] })
Drag options to blanks, or click blank then click option'
ATimestamp.now()
Bfirebase.firestore.FieldValue.serverTimestamp()
Cnew Date()
DDate.now()
Attempts:
3 left
💡 Hint
Common Mistakes
Using client-side date functions instead of server timestamp.
Confusing update with set method.
3fill in blank
hard

Fix the error in the code to correctly set a Firestore field to the server timestamp.

Firebase
docRef.set({ time: [1] })
Drag options to blanks, or click blank then click option'
Afirebase.firestore.FieldValue.serverTimestamp()
Bfirebase.firestore.Timestamp.now()
Cnew Date()
DDate.now()
Attempts:
3 left
💡 Hint
Common Mistakes
Using Timestamp.now() which is client time.
Using new Date() or Date.now() which are client times.
4fill in blank
hard

Fill both blanks to create a Firestore document with 'createdAt' and 'updatedAt' fields set to server timestamps.

Firebase
docRef.set({ createdAt: [1], updatedAt: [2] })
Drag options to blanks, or click blank then click option'
Afirebase.firestore.FieldValue.serverTimestamp()
Bnew Date()
CDate.now()
Dfirebase.firestore.Timestamp.now()
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing client-side and server-side timestamp methods.
Using different methods for createdAt and updatedAt.
5fill in blank
hard

Fill all three blanks to update a Firestore document with 'lastLogin', 'lastLogout', and 'lastAction' fields set to server timestamps.

Firebase
docRef.update({ lastLogin: [1], lastLogout: [2], lastAction: [3] })
Drag options to blanks, or click blank then click option'
Anew Date()
Bfirebase.firestore.FieldValue.serverTimestamp()
DDate.now()
Attempts:
3 left
💡 Hint
Common Mistakes
Using client-side date functions.
Using inconsistent timestamp methods across fields.

Practice

(1/5)
1. What is the main purpose of using firebase.firestore.FieldValue.serverTimestamp() in Firestore?
easy
A. To get the current time from the user's device
B. To store the exact time from the server when the data is written
C. To create a random timestamp for testing
D. To convert a timestamp to a readable string

Solution

  1. Step 1: Understand server timestamp usage

    The method serverTimestamp() sets the field to the current time according to the server, not the client device.
  2. Step 2: Compare with other options

    Options B, C, and D do not describe server-based time storage. Only To store the exact time from the server when the data is written correctly describes storing server time when data is written.
  3. Final Answer:

    To store the exact time from the server when the data is written -> Option B
  4. Quick Check:

    Server timestamp = accurate server time [OK]
Hint: Server timestamp always uses server time, not client time [OK]
Common Mistakes:
  • Thinking it uses client device time
  • Confusing with formatting timestamps
  • Assuming it generates random times
2. Which of the following is the correct syntax to set a Firestore document field to the server timestamp?
easy
A. docRef.set({ createdAt: firebase.firestore.FieldValue.serverTimestamp() })
B. docRef.set({ createdAt: new Date() })
C. docRef.set({ createdAt: Date.now() })
D. docRef.set({ createdAt: firebase.firestore.Timestamp.now() })

Solution

  1. Step 1: Identify correct method for server timestamp

    The correct method to set a server timestamp in Firestore is firebase.firestore.FieldValue.serverTimestamp().
  2. Step 2: Check other options for correctness

    docRef.set({ createdAt: new Date() }) uses client time with new Date(). docRef.set({ createdAt: Date.now() }) uses client time with Date.now(). docRef.set({ createdAt: firebase.firestore.Timestamp.now() }) uses current timestamp but from client side. Only docRef.set({ createdAt: firebase.firestore.FieldValue.serverTimestamp() }) uses the server timestamp method.
  3. Final Answer:

    docRef.set({ createdAt: firebase.firestore.FieldValue.serverTimestamp() }) -> Option A
  4. Quick Check:

    Correct syntax = docRef.set({ createdAt: firebase.firestore.FieldValue.serverTimestamp() }) [OK]
Hint: Use FieldValue.serverTimestamp() to get server time [OK]
Common Mistakes:
  • Using client-side Date or Timestamp instead
  • Missing firebase.firestore prefix
  • Using parentheses incorrectly
3. Consider this Firestore update code:
docRef.update({ lastModified: firebase.firestore.FieldValue.serverTimestamp() });

What will be the value of lastModified immediately after this update on the client side?
medium
A. The client device's current time
B. The exact server timestamp value
C. null until the server confirms the update
D. An error because serverTimestamp() cannot be used in update

Solution

  1. Step 1: Understand serverTimestamp behavior on client

    When using serverTimestamp(), Firestore sets the field to null locally until the server responds with the actual timestamp.
  2. Step 2: Evaluate options based on this behavior

    The exact server timestamp value is incorrect because the client does not have the exact server time immediately. The client device's current time is wrong because client time is not used. An error because serverTimestamp() cannot be used in update is wrong because serverTimestamp() can be used in update. null until the server confirms the update correctly states the field is null initially.
  3. Final Answer:

    null until the server confirms the update -> Option C
  4. Quick Check:

    Local value before server response = null [OK]
Hint: Local timestamp is null until server confirms [OK]
Common Mistakes:
  • Expecting immediate server time on client
  • Confusing update with set behavior
  • Assuming client time is used
4. You wrote this Firestore code but get an error:
docRef.set({ createdAt: firebase.firestore.serverTimestamp() });

What is the likely cause of the error?
medium
A. The document reference docRef is undefined
B. Using set instead of update
C. Server timestamps cannot be used in set calls
D. Missing FieldValue in the method call

Solution

  1. Step 1: Check the method call syntax

    The correct method to get a server timestamp is firebase.firestore.FieldValue.serverTimestamp(). The code misses FieldValue.
  2. Step 2: Verify other options

    Using set instead of update is incorrect because set supports server timestamps. Server timestamps cannot be used in set calls is false for the same reason. The document reference docRef is undefined could cause an error but the question implies a syntax mistake.
  3. Final Answer:

    Missing FieldValue in the method call -> Option D
  4. Quick Check:

    Correct method includes FieldValue [OK]
Hint: Always include FieldValue before serverTimestamp() [OK]
Common Mistakes:
  • Omitting FieldValue in method call
  • Confusing set and update restrictions
  • Assuming serverTimestamp is a direct method of firestore
5. You want to store a user's last login time using server timestamps but only update it if the new login time is later than the existing one. Which Firestore approach correctly applies this logic?
hard
A. Use a Firestore transaction to read current timestamp and update with serverTimestamp() if newer
B. Read the current timestamp, compare client time, then conditionally update with serverTimestamp()
C. Use serverTimestamp() directly in update() without checks
D. Set the timestamp field with client time and rely on serverTimestamp() fallback

Solution

  1. Step 1: Understand conditional update needs

    To update only if the new login time is later, you must read the current value and compare before writing.
  2. Step 2: Identify Firestore feature for atomic read-write

    Firestore transactions allow reading a document and conditionally updating it atomically, ensuring no race conditions.
  3. Step 3: Evaluate options

    Use serverTimestamp() directly in update() without checks ignores condition. Read the current timestamp, compare client time, then conditionally update with serverTimestamp() uses client time which is unreliable. Set the timestamp field with client time and rely on serverTimestamp() fallback mixes client and server times incorrectly. Use a Firestore transaction to read current timestamp and update with serverTimestamp() if newer correctly uses a transaction with serverTimestamp.
  4. Final Answer:

    Use a Firestore transaction to read current timestamp and update with serverTimestamp() if newer -> Option A
  5. Quick Check:

    Conditional update needs transaction [OK]
Hint: Use transactions for conditional server timestamp updates [OK]
Common Mistakes:
  • Relying on client time for comparisons
  • Not using transactions for atomic checks
  • Updating without checking existing timestamp
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