所以我有一个路由js文件,它处理来自特定端点的所有请求。我需要从中间件中获取完整的url而不是相对的url,但它似乎不起作用。这是我的路线文件:
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;
这是中间件:
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
};
每当我尝试打印网址时,我都会收到 /
。但端点是/members
。
提前致谢。
最佳答案
请求对象上有一个 baseUrl
属性,它为您提供了安装路由器实例的 URL 路径。所以你可以使用:
req.baseUrl
例如在您的成员路由器中:
router.get('/', isAuthenticated, function (req, res, next) {
console.log(req.baseUrl); // /members
});
关于node.js - Express 从路由文件中获取完整 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42254298/