express router.param([name] callback)为什么name传数组多个param不行?

发布于 2022-09-07 22:35:35 字数 1281 浏览 12 评论 0

const express = require('express')
const router = express.Router()
const Student = require('../students')


router.param(['id','page'], function (req, res, next, value) {
    console.log('11', value);
    next();
  })

router.get('/user/:id/:page', function (req, res, next) {
    console.log('22');
    next();
});
  
router.get('/user/:id/:page', function (req, res) {
    console.log('33');
    res.end();
});

//浏览器  
http://localhost:3000/user/42/2323


//控制台结果
[nodemon] restarting due to changes...
[nodemon] starting `node app.js`
app is running at port 3000
22
33

//数组里面只有一个值,或者第一个参数直接传一个param

const express = require('express')
const router = express.Router()
const Student = require('../students')


router.param(['id'], function (req, res, next, value) {
    console.log('11', value);
    next();
  })

router.get('/user/:id', function (req, res, next) {
    console.log('22');
    next();
});
  
router.get('/user/:id', function (req, res) {
    console.log('33');
    res.end();
});

//浏览器  
http://localhost:3000/user/42


//控制台结果
[nodemon] restarting due to changes...
[nodemon] restarting due to changes...
[nodemon] starting `node app.js`
app is running at port 3000
11 42
22
33

不知道为什么 按官方文档来的, 第一个参数传数组且多个param 就进不去,求大佬们帮助下

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

为你鎻心 2022-09-14 22:35:35

最后发现原因是 router.param 不接受多参数的, 但是express中文文档没人维护 API没更新,引发的错误。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文