router.get 没有参数但要求参数

router.get without parameter but asking for param

我正在尝试使用 express nodejs 和 JWT。这是我所经历的源代码:link.

我保护所有路由,除了我在 jwt.js 文件中声明的路由。

  1. '/trial'url,不受保护。控制器在trial.controller.js 文件中。当我在邮递员中使用 getpost 方法并且没有任何身份验证(No Auth)时点击 url,我得到了我所期望的。
  2. 但是,当我点击 '/users/testdata' 时,同样的事情不会发生。它不受保护,但如果我使用 get 方法点击它并且没有任何身份验证,它会 returns error 500 在邮递员中显示消息 "Cannot read property 'sub' of undefined" 。但是,当我用 post 方法点击它时,我得到了我期望的结果。

那么,get 方法有什么问题?

完整代码请见上文link。任何帮助对我来说意义重大。谢谢!

出现问题是因为路由router.get('/:id', getById);定义在路由router.get('/testdata', getTest);之前。因此,当您对 /testdata 路由执行请求时,它由 /:id 路由处理,需要身份验证才能工作,并使用 currentUser.sub 属性,尽管 currentUser变量当前未定义。

只需更改顺序

router.get('/:id', getById);
router.get('/testdata', getTest);

router.get('/testdata', getTest);
router.get('/:id', getById);