Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Deleting Documents with Express
📖 Scenario: You are building a simple web server using Express. This server manages a list of documents stored in memory. You want to add the ability to delete a document by its ID.
🎯 Goal: Build an Express server that stores documents in an array and allows deleting a document by its id using a DELETE request.
📋 What You'll Learn
Create an array called documents with three objects, each having id and title properties.
Create a variable called deleteId and set it to 2.
Use the filter method on documents to remove the document with id equal to deleteId.
Add an Express DELETE route at /documents/:id that deletes the document with the given id from documents.
💡 Why This Matters
🌍 Real World
Deleting documents or records is a common feature in web applications like content management systems, note-taking apps, or admin dashboards.
💼 Career
Understanding how to handle DELETE requests and manipulate data collections is essential for backend developers working with REST APIs.
Progress0 / 4 steps
1
Create the initial documents array
Create an array called documents with these exact objects: { id: 1, title: 'Doc One' }, { id: 2, title: 'Doc Two' }, and { id: 3, title: 'Doc Three' }.
Express
Hint
Use const documents = [ ... ] with three objects inside.
2
Set the ID to delete
Create a variable called deleteId and set it to the number 2.
Express
Hint
Use const deleteId = 2; to store the ID to delete.
3
Filter out the document to delete
Use the filter method on documents to create a new array without the document whose id equals deleteId. Assign this new array back to documents.
Express
Hint
Use documents = documents.filter(doc => doc.id !== deleteId); to remove the document.
4
Add Express DELETE route to delete documents
Add an Express DELETE route at /documents/:id. Inside the route, convert req.params.id to a number, then update documents by filtering out the document with that id. Send a JSON response with { message: 'Document deleted' }.
Express
Hint
Use app.delete('/documents/:id', (req, res) => { ... }) and inside convert req.params.id to a number, then filter documents, then send JSON response.
Practice
(1/5)
1. What does the deleteOne() method do in Express when working with a database?
easy
A. Deletes a single document that matches the filter criteria.
B. Deletes all documents in the collection.
C. Updates a document instead of deleting it.
D. Finds a document but does not delete it.
Solution
Step 1: Understand deleteOne() purpose
The deleteOne() method removes only one document that matches the given filter.
Step 2: Compare with other methods
deleteMany() deletes multiple documents, and find() only retrieves data without deleting.
Final Answer:
Deletes a single document that matches the filter criteria. -> Option A
Quick Check:
deleteOne() = deletes one document [OK]
Hint: Remember: deleteOne removes just one matching document [OK]
Common Mistakes:
Confusing deleteOne with deleteMany
Thinking deleteOne updates documents
Assuming deleteOne finds but does not delete
2. Which of the following is the correct syntax to delete a document by its ID using Mongoose in Express?
easy
A. Model.findByIdAndDelete(id, callback);
B. Model.deleteById(id);
C. Model.removeById(id);
D. Model.deleteOneById(id);
Solution
Step 1: Recall Mongoose method for deleting by ID
The correct method is findByIdAndDelete() which deletes a document by its ID.
Step 2: Check syntax correctness
Only Model.findByIdAndDelete(id, callback); matches the official Mongoose syntax.
Final Answer:
Model.findByIdAndDelete(id, callback); -> Option A
Quick Check:
Use findByIdAndDelete to delete by ID [OK]
Hint: Use findByIdAndDelete to remove by ID [OK]
Common Mistakes:
Using non-existent methods like deleteById
Confusing deleteOne with findByIdAndDelete
Missing callback or async handling
3. What will be the output of this code snippet in Express using Mongoose?
A. An error because deleteMany does not return deletedCount.
B. The entire deleted documents array.
C. Number of documents deleted with status 'inactive'.
D. Undefined because deleteMany returns nothing.
Solution
Step 1: Understand deleteMany return value
deleteMany() returns an object with deletedCount indicating how many documents were deleted.
Step 2: Analyze the console.log statement
The code logs result.deletedCount, so it outputs the number of deleted documents matching the filter.
Final Answer:
Number of documents deleted with status 'inactive'. -> Option C
Quick Check:
deleteMany() returns deletedCount [OK]
Hint: deleteMany returns deletedCount in result object [OK]
Common Mistakes:
Expecting deleted documents array
Assuming deleteMany returns nothing
Confusing deletedCount with total documents
4. Identify the error in this Express Mongoose code snippet for deleting a document:
Model.deleteOne({ _id: id }, (err, doc) => {
if (err) console.log(err);
else console.log(doc);
});
medium
A. The filter object is missing required fields.
B. The deleteOne method does not accept a callback.
C. The method should be deleteMany to delete one document.
D. The callback parameter doc should be result to access deletion info.
Solution
Step 1: Check callback parameters for deleteOne
The second callback parameter is a result object, not the deleted document itself.
Step 2: Understand what doc represents
It should be named result or similar to reflect it contains deletion info like deletedCount, not the document.
Final Answer:
The callback parameter doc should be result to access deletion info. -> Option D
Quick Check:
Callback gets result info, not deleted doc [OK]
Hint: Callback second param is result info, not deleted doc [OK]
Common Mistakes:
Expecting deleted document in callback
Using deleteMany when only one document needed
Assuming deleteOne does not accept callbacks
5. You want to delete all documents where the field active is false, but only if the user confirms. Which Express code snippet correctly handles this with error checking?
hard
A. Model.deleteMany({ active: false }, (err, res) => {
if (err) throw err;
console.log(res);
});