Bird
Raised Fist0
Firebasecloud~5 mins

Deleting documents in Firebase - Commands & Configuration

Choose your learning style10 modes available
Introduction
Sometimes you need to remove data you no longer want in your app. Deleting documents in Firebase Firestore helps you keep your database clean and up to date by removing unwanted records.
When a user deletes their profile and you want to remove their data.
When you want to clear outdated or incorrect information from your app.
When cleaning up test data after development or debugging.
When removing items from a shopping cart after purchase.
When deleting logs or temporary data that is no longer needed.
Commands
This command deletes a specific document named 'my-document' inside 'my-collection' in Firestore. The --recursive flag ensures all nested data is deleted, and --yes skips confirmation to automate the process.
Terminal
firebase firestore:delete --project example-project --recursive --yes collections/my-collection/my-document
Expected OutputExpected
Deleted document collections/my-collection/my-document
→
--recursive - Deletes all nested collections and documents under the specified document.
→
--yes - Skips the confirmation prompt to delete immediately.
→
--project - Specifies which Firebase project to target.
This command tries to retrieve the deleted document to verify it no longer exists.
Terminal
firebase firestore:documents get --project example-project collections/my-collection/my-document
Expected OutputExpected
Error: Document not found: projects/example-project/databases/(default)/documents/my-collection/my-document
→
--project - Specifies which Firebase project to target.
Key Concept

If you remember nothing else from this pattern, remember: deleting a document removes it and all its nested data permanently from Firestore.

Common Mistakes
Running the delete command without the --recursive flag on a document that has nested collections.
Only the document itself is deleted, but nested collections remain, causing leftover data.
Always use --recursive to delete the document and all nested collections completely.
Not specifying the correct project with --project flag.
The command may run on the wrong Firebase project, deleting unintended data or failing to find the document.
Always include --project with your Firebase project ID to target the right database.
Skipping verification after deletion.
You might think the document is deleted but it still exists due to errors or missing flags.
Run a get command after deletion to confirm the document no longer exists.
Summary
Use the firebase firestore:delete command with --recursive and --yes flags to delete documents and nested data.
Always specify the correct Firebase project with the --project flag.
Verify deletion by attempting to get the document after deletion.

Practice

(1/5)
1. What does the delete() method do in Firebase Firestore?
easy
A. Reads data from a document
B. Adds a new document to the database
C. Updates fields in an existing document
D. Removes a specific document from the database

Solution

  1. Step 1: Understand the purpose of delete()

    The delete() method is used to remove a document from Firestore.
  2. Step 2: Compare with other operations

    Adding, updating, and reading documents use different methods like set(), update(), and get().
  3. Final Answer:

    Removes a specific document from the database -> Option D
  4. Quick Check:

    delete() removes documents [OK]
Hint: Delete removes documents, not adds or updates [OK]
Common Mistakes:
  • Confusing delete() with set() or update()
  • Thinking delete() reads data
  • Assuming delete() removes collections
2. Which of the following is the correct syntax to delete a document with ID 'doc1' from a collection 'users' in Firestore?
easy
A. db.collection('users').doc('doc1').remove()
B. db.collection('users').delete('doc1')
C. db.collection('users').doc('doc1').delete()
D. db.delete('users/doc1')

Solution

  1. Step 1: Identify correct method to delete a document

    The method to delete a document is delete() called on a document reference.
  2. Step 2: Check syntax for document reference

    Use collection('users').doc('doc1') to get the document, then call delete().
  3. Final Answer:

    db.collection('users').doc('doc1').delete() -> Option C
  4. Quick Check:

    Use doc().delete() to remove documents [OK]
Hint: Use doc('id').delete() to remove a document [OK]
Common Mistakes:
  • Using remove() instead of delete()
  • Calling delete() on collection instead of doc
  • Wrong method chaining order
3. What will the following code output if the document 'doc1' exists and is deleted successfully?
db.collection('users').doc('doc1').delete()
  .then(() => console.log('Deleted'))
  .catch(() => console.log('Error'))
medium
A. Error
B. Deleted
C. Nothing
D. SyntaxError

Solution

  1. Step 1: Understand promise handling in delete()

    The delete() method returns a promise that resolves on success and rejects on failure.
  2. Step 2: Analyze the then/catch handlers

    If deletion succeeds, then() runs and logs 'Deleted'. If it fails, catch() logs 'Error'.
  3. Final Answer:

    Deleted -> Option B
  4. Quick Check:

    Successful delete logs 'Deleted' [OK]
Hint: Successful delete triggers then(), logs 'Deleted' [OK]
Common Mistakes:
  • Assuming delete() is synchronous
  • Ignoring promise handling
  • Expecting output without then()
4. Identify the error in this code snippet that tries to delete a document:
const docRef = db.collection('users').doc('doc1');
docRef.delete;
console.log('Deleted');
medium
A. Missing parentheses after delete method call
B. Wrong collection name
C. docRef is not defined
D. delete is not a method

Solution

  1. Step 1: Check method invocation syntax

    The delete method must be called with parentheses: delete().
  2. Step 2: Identify impact of missing parentheses

    Without parentheses, the method is not executed, so the document is not deleted.
  3. Final Answer:

    Missing parentheses after delete method call -> Option A
  4. Quick Check:

    Call delete() with () to execute [OK]
Hint: Always use parentheses to call delete() method [OK]
Common Mistakes:
  • Forgetting () after delete
  • Assuming delete is a property, not a method
  • Ignoring promise handling
5. You want to delete multiple documents with IDs ['doc1', 'doc2', 'doc3'] from the 'users' collection. Which approach correctly deletes all documents and logs 'All deleted' after completion?
hard
A. Use Promise.all with delete promises:
Promise.all(['doc1','doc2','doc3'].map(id => db.collection('users').doc(id).delete()))
  .then(() => console.log('All deleted'))
B. Call delete() on the collection:
db.collection('users').delete();
console.log('All deleted');
C. Use a loop with await:
for (const id of ['doc1','doc2','doc3']) {
  await db.collection('users').doc(id).delete();
}
console.log('All deleted');
D. Delete documents without waiting:
['doc1','doc2','doc3'].forEach(id => db.collection('users').doc(id).delete());
console.log('All deleted');

Solution

  1. Step 1: Understand asynchronous deletion of multiple documents

    Deleting multiple documents returns promises; to know when all finish, use Promise.all().
  2. Step 2: Evaluate each option's correctness

    Use Promise.all with delete promises:
    Promise.all(['doc1','doc2','doc3'].map(id => db.collection('users').doc(id).delete()))
      .then(() => console.log('All deleted'))
    uses Promise.all() with delete promises to wait for all deletions concurrently before logging. B calls invalid delete() on collection. C uses await loop without async function, causing syntax error. D logs without waiting for completion.
  3. Final Answer:

    Use Promise.all with delete promises -> Option A
  4. Quick Check:

    Promise.all waits for all deletes before logging [OK]
Hint: Use Promise.all to wait for all deletes before logging [OK]
Common Mistakes:
  • Trying to delete entire collection directly
  • Not waiting for all deletes before logging
  • Using forEach without async/await or Promise.all
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