➡️
Middleware

next() and Middleware Order

Chain Control aur Execution Sequence
💡 next() EK RELAY RACE ka BATON hai — jab tak tum baton aage nahi pass karoge, agla runner khada hi rahega aur race kabhi khatam nahi hogi.

next() ka matlab hai "mera kaam ho gaya, agle ko chalao". next() ko ERROR ke saath call karna — next(err) — normal chain SKIP karke seedha error-handling middleware par jaata hai.

Middleware STRICTLY REGISTRATION ORDER mein chalte hain. Isi wajah se app.use(express.json()) routes se PEHLE likhna padta hai — warna route ke chalte waqt req.body abhi tak parse hi nahi hua hoga aur undefined milega.

app.use(express.json());     // PEHLE — warna req.body undefined
app.post("/users", (req, res, next) => {
  if (!req.body.name) return next(new Error("name required")); // error path
  res.status(201).json(req.body);
});

// next("route") — is route ke baaki handlers skip, agla matching route
➡️
next() EK RELAY RACE ka BATON hai — jab tak tum baton aage nahi pass karoge, agla runner khada hi rahega aur race kabhi khatam nahi hogi.
1 / 2
⚡ झट से Recap
  • next() chain aage badhata hai, next(err) seedha error middleware par jaata hai
  • Middleware registration order mein chalta hai — parser routes se pehle
  • next() ke saath return lagao, warna code aage chalta rehta hai
इस page में (2 subtopics)

next() agli layer chalata hai. next(err) NORMAL layers skip karke seedha error-handling middleware par jaata hai. next("route") current route ke baaki handlers skip karke agle MATCHING ROUTE par chala jaata hai — conditional routing ke liye useful hai.

app.get("/item/:id",
  (req, res, next) => {
    if (req.params.id === "0") return next("route");   // agla route
    next();
  },
  (req, res) => res.send("normal item"));

app.get("/item/:id", (req, res) => res.send("special zero item"));

Teen classic order bugs: (1) express.json() routes ke BAAD lagana — req.body undefined; (2) error handler routes se PEHLE lagana — errors kabhi nahi pakde jaate; (3) 404 catch-all routers se PEHLE lagana — sab kuch 404 ho jaata hai.

💡Tip: Ek safe default order yaad rakho: security → parsers → static → routes → 404 → error handler.