---
title: 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:
```javascript
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)
```javascript
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:
```javascript
const middleware = (req, res, next) => {
  req.time = new Date().toString();
  next();
};
app.get("/now", middleware, (req, res) => {
  res.send({
    time: req.time
  });
});
```