by Sai gowtham

How to pass variables to the Express Middleware

In this tutorial, we are going to learn about how to pass a variable through the middleware function in the express.

Consider, we have a two middlewares in our /users route like this.

const express = require('express');

const app = express();

app.get('/users', logger1, logger2, (req, res) => {    res.send('users page');
})

function logger1(req, res, next) {
    console.log('logger 1');
    next();
}

function logger2(req, res, next) {
    console.log('logger 2');
    next();
}

app.listen(4300, () => console.log(`App is running`));

Now, we need to pass some variables from the logger 1 middleware to the logger 2 middleware.

We can do it by using res.locals object, where variables are valid only for the lifetime of the request.

const express = require('express');

const app = express();

app.get('/users', logger1, logger2, (req, res) => {
    res.send('users page');
})

function logger1(req, res, next) {
    // passing variables
    res.locals.user = "gowtham";    res.locals.id = "3434";    next();
}

function logger2(req, res, next) {
    // accessing variables
    const user = res.locals.user;    const id = res.locals.id;    console.log(user, id);
    next();
}

app.listen(4300, () => console.log(`App is running`));

Note: you can’t pass variables through the next() function because it used to run the next middleware function in the app.

Top Udemy Courses

JavaScript - The Complete Guide 2020 (Beginner + Advanced)
JavaScript - The Complete Guide 2020 (Beginner + Advanced)
26,545 students enrolled
52 hours of video content
View Course
React - The Complete Guide (incl Hooks, React Router, Redux)
React - The Complete Guide (incl Hooks, React Router, Redux)
221,520 students enrolled
44 hours of video content
View Course
Vue JS 2 - The Complete Guide (incl. Vue Router & Vuex)
Vue JS 2 - The Complete Guide (incl. Vue Router & Vuex)
114,575 students enrolled
21 hours of video content
View Course