how to get the api result from middleware to routes

Viewed 755

I just wanted to get the result from the API in the middle ware that apply to routes. i am using express js the res.locals.wallet doesn't have a value

var request = require('request');

module.exports = function(req, res, next) {

    if(req.session.active){
        res.locals.active = req.session.active;
        res.locals.email = req.session.email;
        // res.locals.wallet = req.session.wallet;
        res.locals.admin = req.session.admin;
        res.locals.cart = req.session.cart;
        res.locals.partner = req.session.partner;

        var data =  {
            user_id :req.session.user_id,
        }

        request.post({
        url : 'https://api.sample.com/frontend/sample',
        form  : data,
        }, function (error, response, body) {
            var bodyJson = JSON.parse(body);
            console.log(bodyJson);
            res.locals.wallet = req.session.wallet; <----- HERES THE PROBLEM

            next();
        });

    } else {
        res.redirect("/login");
    }
    next();
};
1 Answers

You call next immediate in your middleware, now res.locals.wallet value is undefined.

Just call next when you finish the job (call api).

var request = require('request');

module.exports = function(req, res, next) {

    if(req.session.active){
        res.locals.active = req.session.active;
        res.locals.email = req.session.email;
        // res.locals.wallet = req.session.wallet;
        res.locals.admin = req.session.admin;
        res.locals.cart = req.session.cart;
        res.locals.partner = req.session.partner;

        var data =  {
            user_id :req.session.user_id,
        }

        request.post({
        url : 'https://api.sample.com/frontend/sample',
        form  : data,
        }, function (error, response, body) {
            var bodyJson = JSON.parse(body);
            console.log(bodyJson);
            res.locals.wallet = req.session.wallet; <----- HERES THE PROBLEM

            next();
        });

    } else {
        res.redirect("/login");
    }
    // next(); <----------------- remove this line
};
Related