Michael
Michael

Reputation: 721

Express get full url from a route file

So I have a route js file which handles all requests from a particular endpoint.I need to get the full url from within a middleware not the relative url however it seems not to be working. Here's my route file:

var express = require('express');
var passport = require('passport');
var router = express.Router();
var Member = require('../model/member');
var isAuthenticated = require('./middleware').isAuthenticated;

var responseData = {
    title: 'Dita Admin - Members',
    id: 'members',
    heading: 'Members',
    members: [],
    errors: {},
    create: true
};

/* GET members page. */
router.get('/', isAuthenticated, function (req, res, next) {
    Member.find({}, function (err, members) {
        if (err) {
            console.log(err);
        } else {
            responseData.members = members;
        }

        res.render('members', responseData);
    });

});

module.exports = router;

Here's the middleware:

var isAuthenticated = function (req, res, next) {
    if (req.isAuthenticated()) {
        return next();
    }

    req.session.returnTo = req.path;
    console.log(req.session.returnTo);
    res.redirect('/login');
};

module.exports = {
    isAuthenticated: isAuthenticated
};

I keep getting / whenever i try to print the url. But the endpoint is /members. Thanks in advance.

Upvotes: 1

Views: 1226

Answers (1)

dNitro
dNitro

Reputation: 5345

There is a baseUrl property placed on request object which gives you the URL path on which a router instance was mounted. So you could use:

req.baseUrl

for example in your members router:

router.get('/', isAuthenticated, function (req, res, next) {
  console.log(req.baseUrl); // /members
});

Upvotes: 3

Related Questions