[英]Express js 4x :req.params returns empty object
试图在快递js中获取URl参数,但得到空对象。
var password= require('./routes/password');
app.use('/reset/:token',password);
password.js
router.get('/', function(req, res, next) {
console.log(req.params);
res.send(req.params);
});
console.log(req.params)
输出为{}
访问网址: http://localhost:3000/reset/CiVv6U9HUPlES3i0eUsNwK9zb7xVZpfHsQNuzMNWqLlGA4NJKoagwbcyiUZ8
默认情况下,嵌套路由器不会从其父路由器传递任何在mountpath中使用的参数。
在您的情况下, app
是父路由器,它使用/reset/:token
作为mountpath, router
是嵌套路由器。
如果您希望router
能够访问req.params.token
,请按如下所示创建它:
let router = express.Router({ mergeParams : true });
记录在这里 。
相反,您可以使用中间件来记录路径参数:
const logger = (req, res, next)=>{
console.log(req.params)
res.send(req.params)
next()//<----very important to call it.
};
app.use(logger); //<----use to apply in the app
router.get('/', (req, res, next)=>res.send('Logged.'));
实际上你搞砸了一下。 您必须将express
实例传递给您的模块。
Server.js :
//adding modules
require('./routes/password')(app);
Password.js :
module.exports = function(router) {
router.get('/reset/:token', function(req, res, next) {
console.log(req.params);
res.send(req.params);
});
//and so on.. your routes go here
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.