Reputation: 721
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
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:
for example in your members router:
router.get('/', isAuthenticated, function (req, res, next) {
console.log(req.baseUrl); // /members
});
Upvotes: 3