Files
Sudipto Ghosh 29823fe495 Expanded guides for some APIs and Microservices challenges and fixed links to the source files (#36131)
* Expanded the solution for the 'Get Route Parameter Input from the Client' challenge

* Expanded the guide for the 'Use body-parser to Parse POST Requests' challenge

* Rewritten guide for the 'Serve JSON on a Specific Route' challenge and fixed source link

* Expanded the guide for the 'Serve Static Assets' challenge

* Expanded solution to the 'Get Query Parameter Input from the Client' challenge and fixed links to source file

* Added solution to the 'Chain Middleware to Create a Time Server' challenge and fixed link to source file

* Rewrite the 'Start a Working Express Server' challenge

* Expanded the guide for 'Expand Your Project with External Packages from npm'

* Added reference to semantic versioning in 'Add a Version to Your package.json'

* fix/remove-links+fix-solutions

* fix/remove-more-links
2019-07-01 20:35:15 -05:00

1.3 KiB

title
title
Chain Middleware to Create a Time Server

Chain Middleware to Create a Time Server

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

Hint

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);
});

Solution

app.get("/now", (req, res, next) => {
  req.time = new Date().toString();
  next();
}, (req, res) => {
  res.send({
    time: req.time
  });
});

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
  });
});