Bird
Raised Fist0
Node.jsframework~5 mins

Middleware vs decorator pattern in Node.js - Quick Revision & Key Differences

Choose your learning style10 modes available
Recall & Review
beginner
What is middleware in Node.js?
Middleware is a function that runs during the request-response cycle. It can modify the request or response objects, end the request, or pass control to the next middleware.
Click to reveal answer
beginner
What is the decorator pattern?
The decorator pattern is a design pattern that lets you add new behavior to objects by wrapping them in a new object, without changing the original object.
Click to reveal answer
intermediate
How does middleware differ from the decorator pattern?
Middleware focuses on processing requests in a chain, often in web servers. Decorators wrap objects to add or change behavior without altering the original object.
Click to reveal answer
beginner
Give a real-life example of middleware.
Think of middleware like security guards checking people entering a building. Each guard (middleware) checks something and decides to let the person pass or stop them.
Click to reveal answer
beginner
Give a real-life example of the decorator pattern.
Imagine wrapping a gift box with different layers of wrapping paper. Each layer adds something new without changing the box inside. This is like decorating an object.
Click to reveal answer
What does middleware typically do in a Node.js app?
AWraps objects to add new methods
BProcesses requests and responses in a chain
CCreates new objects from scratch
DDeletes objects permanently
Which pattern wraps an object to add behavior without changing it?
AMiddleware
BSingleton
CFactory
DDecorator
Middleware is best described as:
AA chain of functions handling requests
BA way to create new classes
CA method to store data permanently
DA tool to decorate UI components
Which is true about the decorator pattern?
AIt wraps an object to add features
BIt modifies the original object directly
CIt is used only in web servers
DIt replaces the original object completely
In Node.js, middleware functions usually:
AAre never chained
BRun all at the same time
CRun one after another in order
DOnly run once when the server starts
Explain in your own words how middleware works in a Node.js application.
Think about how a request travels through several steps before reaching the final handler.
You got /4 concepts.
    Describe the decorator pattern and how it differs from middleware.
    Compare how each pattern changes or handles something.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main difference between middleware and decorator patterns in Node.js?
      easy
      A. Middleware wraps functions; decorators process requests in a chain.
      B. Middleware is only for error handling; decorators only for logging.
      C. Middleware and decorators are the same and used interchangeably.
      D. Middleware processes requests in a chain; decorators wrap functions to add behavior.

      Solution

      1. Step 1: Understand middleware role

        Middleware functions run one after another to handle requests or responses in a chain.
      2. Step 2: Understand decorator role

        Decorators wrap a function to add or modify its behavior without changing the original function.
      3. Final Answer:

        Middleware processes requests in a chain; decorators wrap functions to add behavior. -> Option D
      4. Quick Check:

        Middleware = chain, Decorator = wrap [OK]
      Hint: Middleware chains; decorators wrap functions [OK]
      Common Mistakes:
      • Confusing middleware with decorators
      • Thinking middleware wraps functions
      • Assuming both are identical
      2. Which of the following is the correct way to define a middleware function in Express.js?
      easy
      A. function middleware(req, res, next) { next(); }
      B. function middleware(req, res) { return next(); }
      C. function middleware(next, req, res) { next(); }
      D. function middleware(res, req, next) { next(); }

      Solution

      1. Step 1: Recall Express middleware signature

        Middleware functions take three parameters in order: request, response, and next function.
      2. Step 2: Check parameter order and usage

        function middleware(req, res, next) { next(); } correctly uses (req, res, next) and calls next() to pass control.
      3. Final Answer:

        function middleware(req, res, next) { next(); } -> Option A
      4. Quick Check:

        Middleware signature = (req, res, next) [OK]
      Hint: Middleware params order: req, res, next [OK]
      Common Mistakes:
      • Mixing parameter order
      • Forgetting to call next()
      • Returning next() instead of calling
      3. Consider this decorator function in Node.js:
      function logDecorator(fn) {
        return function(...args) {
          console.log('Calling function');
          return fn(...args);
        };
      }
      
      function greet(name) {
        return `Hello, ${name}!`;
      }
      
      const decoratedGreet = logDecorator(greet);
      console.log(decoratedGreet('Alice'));

      What will be printed to the console?
      medium
      A. Calling function\nHello, Alice!
      B. Hello, Alice!\nCalling function
      C. Calling function
      D. Hello, Alice!

      Solution

      1. Step 1: Understand decorator behavior

        The decorator wraps greet, logging 'Calling function' before calling greet.
      2. Step 2: Trace function calls and output

        Calling decoratedGreet('Alice') logs 'Calling function' then returns 'Hello, Alice!'. Both are printed by console.log.
      3. Final Answer:

        Calling function\nHello, Alice! -> Option A
      4. Quick Check:

        Decorator logs then calls function [OK]
      Hint: Decorator logs before calling wrapped function [OK]
      Common Mistakes:
      • Assuming only greeting prints
      • Confusing order of console logs
      • Missing decorator wrapping effect
      4. This Express middleware is intended to log request URLs but has a bug:
      function logger(req, res, next) {
        console.log('Request URL:', req.url);
        next;
      }

      What is the bug and how to fix it?
      medium
      A. Middleware must return a value; fix by adding return next()
      B. req.url is undefined; fix by using req.path
      C. next is not called as a function; fix by changing to next()
      D. console.log syntax is wrong; fix by adding parentheses

      Solution

      1. Step 1: Identify middleware flow control

        Middleware must call next() as a function to continue the chain.
      2. Step 2: Spot the bug in next usage

        Code uses next without parentheses, so next middleware is never called.
      3. Final Answer:

        next is not called as a function; fix by changing to next() -> Option C
      4. Quick Check:

        Call next() to continue middleware chain [OK]
      Hint: Always call next() as a function in middleware [OK]
      Common Mistakes:
      • Writing next instead of next()
      • Assuming req.url is invalid
      • Thinking middleware must return a value
      5. You want to add authentication to an existing function without changing it. Which pattern fits best and why?
      function fetchData(userId) {
        return `Data for user ${userId}`;
      }
      hard
      A. Modify fetchData directly to add authentication logic inside.
      B. Use a decorator to wrap fetchData and check authentication before calling it.
      C. Use middleware to process fetchData since it handles requests in a chain.
      D. Use middleware to wrap fetchData because middleware wraps functions.

      Solution

      1. Step 1: Understand the goal

        You want to add authentication without changing fetchData itself.
      2. Step 2: Choose the right pattern

        Decorators wrap functions to add behavior like authentication without modifying original code.
      3. Final Answer:

        Use a decorator to wrap fetchData and check authentication before calling it. -> Option B
      4. Quick Check:

        Decorator = add behavior without changing function [OK]
      Hint: Decorator wraps function to add features without changes [OK]
      Common Mistakes:
      • Confusing middleware with decorators
      • Modifying original function directly
      • Thinking middleware wraps functions
      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