0
0
Expressframework~30 mins

Mongoose middleware (pre/post hooks) in Express - Mini Project: Build & Apply

Choose your learning style9 modes available
Mongoose Middleware with Pre and Post Hooks
📖 Scenario: You are building a simple Express app that uses Mongoose to manage a list of books in a library. You want to add middleware hooks to log messages before saving a book and after deleting a book.
🎯 Goal: Create a Mongoose schema for books, add pre-save and post-delete middleware hooks, and export the model for use in your Express app.
📋 What You'll Learn
Create a Mongoose schema named bookSchema with fields title (string) and author (string).
Create a Mongoose model named Book using bookSchema.
Add a pre-save middleware hook on bookSchema that logs "Saving book: [title]" before saving.
Add a post-delete middleware hook on bookSchema that logs "Deleted book: [title]" after deleting.
💡 Why This Matters
🌍 Real World
Middleware hooks in Mongoose are useful to add logging, validation, or other side effects automatically when data changes in a database.
💼 Career
Understanding Mongoose middleware is important for backend developers working with Node.js and MongoDB to maintain clean and maintainable data logic.
Progress0 / 4 steps
1
Create the Book Schema
Create a Mongoose schema called bookSchema with two string fields: title and author.
Express
Need a hint?

Use new mongoose.Schema({ title: String, author: String }) to create the schema.

2
Create the Book Model
Create a Mongoose model called Book using the bookSchema.
Express
Need a hint?

Use mongoose.model('Book', bookSchema) to create the model.

3
Add Pre-save Middleware Hook
Add a pre-save middleware hook on bookSchema that logs "Saving book: [title]" before saving. Use function(next) and this.title inside the hook.
Express
Need a hint?

Use bookSchema.pre('save', function(next) { ... }) and call next() after logging.

4
Add Post-delete Middleware Hook
Add a post middleware hook on bookSchema for the 'deleteOne' event that logs "Deleted book: [title]" after deleting. Use function() and access this.title inside the hook.
Express
Need a hint?

Use bookSchema.post('deleteOne', { document: true, query: false }, function() { ... }) to access the deleted document.