Bird
Raised Fist0
Expressframework~20 mins

next() function and flow control in Express - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Express Flow Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What happens when next() is called in Express middleware?
Consider this Express middleware function:
app.use((req, res, next) => {
console.log('Middleware 1');
next();
console.log('After next');
});

What will be printed to the console when a request is made?
Express
app.use((req, res, next) => {
  console.log('Middleware 1');
  next();
  console.log('After next');
});
ANo output
BMiddleware 1\nAfter next
CAfter next\nMiddleware 1
DMiddleware 1
Attempts:
2 left
💡 Hint
Think about what next() does and when the code after it runs.
❓ lifecycle
intermediate
2:00remaining
How does next() affect error handling middleware?
Given these middleware functions:
app.use((req, res, next) => {
next('error');
});

app.use((err, req, res, next) => {
res.send('Error handled');
});

What will the client receive when a request is made?
Express
app.use((req, res, next) => {
  next('error');
});

app.use((err, req, res, next) => {
  res.send('Error handled');
});
AMiddleware skipped, next middleware runs
BNo response, request hangs
CError handled
DSyntax error
Attempts:
2 left
💡 Hint
What happens when next() is called with a string argument?
📝 Syntax
advanced
2:00remaining
Which middleware setup causes a runtime error?
Identify which option will cause an error when a request is made:
Aapp.use((req, res, next) => { throw new Error('Fail'); });
Bapp.use((req, res, next) => { next(); });
Capp.use((err, req, res, next) => { res.send('Error'); });
Dapp.use((req, res) => { res.send('Done'); next(); });
Attempts:
2 left
💡 Hint
Check if calling next() after sending a response causes issues.
🔧 Debug
advanced
2:00remaining
Why does this middleware never call next() or send a response?
Look at this middleware:
app.use((req, res, next) => {
if (req.query.pass) {
next();
}
});

What happens if req.query.pass is false or missing?
Express
app.use((req, res, next) => {
  if (req.query.pass) {
    next();
  }
});
ARequest hangs because neither next() nor res.send() is called
BRequest proceeds normally
CError thrown due to missing next()
DResponse sent automatically
Attempts:
2 left
💡 Hint
What happens if middleware neither calls next() nor sends a response?
🧠 Conceptual
expert
3:00remaining
What is the effect of calling next('route') in Express middleware?
Consider this route setup:
app.get('/test', (req, res, next) => {
next('route');
}, (req, res) => {
res.send('First handler');
});

app.get('/test', (req, res) => {
res.send('Second handler');
});

What response will the client receive when requesting '/test'?
Express
app.get('/test', (req, res, next) => {
  next('route');
}, (req, res) => {
  res.send('First handler');
});

app.get('/test', (req, res) => {
  res.send('Second handler');
});
ASecond handler
BFirst handler
CError: route not found
DRequest hangs
Attempts:
2 left
💡 Hint
What does next('route') do inside route middleware?

Practice

(1/5)
1. What does the next() function do in Express middleware?
easy
A. It logs the request details to the console.
B. It passes control to the next middleware or route handler.
C. It restarts the current middleware from the beginning.
D. It ends the request and sends a response to the client.

Solution

  1. Step 1: Understand middleware flow

    Express middleware functions run in sequence. Calling next() moves control to the next middleware or route.
  2. Step 2: Identify next() role

    Calling next() does not send a response but passes control forward, allowing the app to continue processing.
  3. Final Answer:

    It passes control to the next middleware or route handler. -> Option B
  4. Quick Check:

    next() moves control forward [OK]
Hint: Remember: next() moves to next step, doesn't send response [OK]
Common Mistakes:
  • Thinking next() sends a response
  • Confusing next() with ending the request
  • Assuming next() restarts middleware
2. Which of the following is the correct syntax to use next() in an Express middleware function?
easy
A. function(req, res, next) { res.next(); }
B. function(req, res) { next(); }
C. function(req, res, next) { next(); }
D. function(req, res, next) { next; }

Solution

  1. Step 1: Check middleware parameters

    Express middleware must have three parameters: req, res, and next to use next().
  2. Step 2: Verify calling next()

    The correct way to call next() is as a function with parentheses: next();
  3. Final Answer:

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

    Correct syntax includes next as parameter and calls next() [OK]
Hint: next() must be called as a function with parentheses [OK]
Common Mistakes:
  • Omitting next parameter
  • Calling next without parentheses
  • Using res.next() instead of next()
3. Consider this Express middleware chain:
app.use((req, res, next) => { console.log('First'); next(); });
app.use((req, res, next) => { console.log('Second'); res.send('Done'); });
app.use((req, res, next) => { console.log('Third'); next(); });

What will be printed in the console when a request is made?
medium
A. First\nSecond
B. First\nSecond\nThird
C. Second\nThird
D. First

Solution

  1. Step 1: Trace middleware execution order

    The first middleware logs 'First' and calls next(), so the second middleware runs next.
  2. Step 2: Check response and flow stop

    The second middleware logs 'Second' and sends a response with res.send('Done'). Sending a response ends the request, so the third middleware does not run.
  3. Final Answer:

    First\nSecond -> Option A
  4. Quick Check:

    Response sent stops flow, so third middleware skipped [OK]
Hint: Sending response stops middleware chain immediately [OK]
Common Mistakes:
  • Assuming all middleware run even after response
  • Thinking next() runs after res.send()
  • Ignoring that res.send ends request
4. What is wrong with this Express middleware?
app.use((req, res, next) => {
  console.log('Logging request');
  // forgot to call next or send response
});
medium
A. It will cause the request to hang and never finish.
B. It will automatically call next() after logging.
C. It will send an empty response to the client.
D. It will throw a syntax error.

Solution

  1. Step 1: Identify missing flow control

    The middleware logs a message but neither calls next() nor sends a response.
  2. Step 2: Understand Express behavior

    Without calling next() or sending a response, Express waits indefinitely, causing the request to hang.
  3. Final Answer:

    It will cause the request to hang and never finish. -> Option A
  4. Quick Check:

    Missing next() or response causes hanging [OK]
Hint: Always call next() or send response to finish middleware [OK]
Common Mistakes:
  • Assuming Express auto-calls next()
  • Thinking console.log ends request
  • Expecting default response without sending
5. You want to create middleware that checks if a user is logged in. If not logged in, it should send a 401 response. If logged in, it should continue to the next middleware. Which code correctly uses next() to achieve this?
hard
A. app.use((req, res, next) => { if (!req.user) { next(); } else { res.status(401).send('Unauthorized'); } });
B. app.use((req, res, next) => { next(); if (!req.user) { res.status(401).send('Unauthorized'); } });
C. app.use((req, res, next) => { if (req.user) { res.status(401).send('Unauthorized'); } else { next(); } });
D. app.use((req, res, next) => { if (!req.user) { res.status(401).send('Unauthorized'); } else { next(); } });

Solution

  1. Step 1: Check user login condition

    If req.user is missing, the middleware should send a 401 Unauthorized response immediately.
  2. Step 2: Use next() correctly

    If the user is logged in, call next() to pass control to the next middleware or route handler.
  3. Final Answer:

    Middleware sends 401 if no user, else calls next() -> Option D
  4. Quick Check:

    Send response before next(), or call next() to continue [OK]
Hint: Send response first if unauthorized; call next() only if authorized [OK]
Common Mistakes:
  • Calling next() before sending response
  • Swapping conditions for sending response
  • Calling next() after sending response
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