freeCodeCamp Challenge Guide: Chain Middleware to Create a Time Server

Chain Middleware to Create a Time Server


Problem Explanation

Similar to the last challenge, but now we are chaining 2 functions together. It seems complicated, but it’s just JavaScript.


Hints

Hint 1

Instead of responding with the time we can also add any arbitrary property to the request object and pass it to the next function by calling the next() method. This is trivial, but it makes for a decent example. The code will looks like this:

app.get(
  "/now",
  (req, res, next) => {
    // adding a new property to req object
    // in the middleware function
    req.string = "example";
    next();
  },
  (req, res) => {
    // accessing the newly added property
    // in the main function
    res.send(req.string);
  }
);

Solutions

Solution 1 (Click to Show/Hide)
app.get(
  "/now",
  (req, res, next) => {
    req.time = new Date().toString();
    next();
  },
  (req, res) => {
    res.send({
      time: req.time
    });
  }
);
Solution 2 (Click to Show/Hide)

You can also declare the middleware beforehand to use in multiple routes as shown below:

const middleware = (req, res, next) => {
  req.time = new Date().toString();
  next();
};

app.get("/now", middleware, (req, res) => {
  res.send({
    time: req.time
  });
});
7 Likes