无法访问 express js router.delete 中的参数
Posted
技术标签:
【中文标题】无法访问 express js router.delete 中的参数【英文标题】:unable to access parms in expressjs router.delete 【发布时间】:2017-04-07 22:02:36 【问题描述】:这是我的代码片段,我在其中使用了 Express 路由器和 Mongoose 模型。
我无法访问 id parm。
router.delete('/task/:id', function (req, res)
Task.remove( did: req.parms.id , (err) =>
if (err)
res.send(err);
);
);
这是我收到的错误
TypeError:无法读取未定义的属性“id” 在 F:\NS\routes\tasks.js:11:33 在 Layer.handle [as handle_request] (F:\NS\node_modules\express\lib\router\layer.js:95:5) 在下一个 (F:\NS\node_modules\express\lib\router\route.js:131:13) 在 Route.dispatch (F:\NS\node_modules\express\lib\router\route.js:112:3) 在 Layer.handle [as handle_request] (F:\NS\node_modules\express\lib\router\layer.js:95:5) 在 F:\NS\node_modules\express\lib\router\index.js:277:22 在参数 (F:\NS\node_modules\express\lib\router\index.js:349:14) 在参数 (F:\NS\node_modules\express\lib\router\index.js:365:14) 在 Function.process_params (F:\NS\node_modules\express\lib\router\index.js:410:3) 在下一个 (F:\NS\node_modules\express\lib\router\index.js:271:10) 在 Function.handle (F:\NS\node_modules\express\lib\router\index.js:176:3) 在路由器 (F:\NS\node_modules\express\lib\router\index.js:46:12) 在 Layer.handle [as handle_request] (F:\NS\node_modules\express\lib\router\layer.js:95:5) 在 trim_prefix (F:\NS\node_modules\express\lib\router\index.js:312:13) 在 F:\NS\node_modules\express\lib\router\index.js:280:7 在 Function.process_params (F:\NS\node_modules\express\lib\router\index.js:330:12) 在下一个 (F:\NS\node_modules\express\lib\router\index.js:271:10) 在 F:\NS\node_modules\express-validator\lib\express_validator.js:291:5 在 Layer.handle [as handle_request] (F:\NS\node_modules\express\lib\router\layer.js:95:5) 在 trim_prefix (F:\NS\node_modules\express\lib\router\index.js:312:13) 在 F:\NS\node_modules\express\lib\router\index.js:280:7 在 Function.process_params (F:\NS\node_modules\express\lib\router\index.js:330:12)
【问题讨论】:
【参考方案1】:当访问路由参数时,对象不是parms
,它的params
. 因为parms
总是undefined
,你会遇到这个问题,因为你试图访问一个属性undefined
你做不到。
router.delete('/task/:id', (req, res) =>
Task.remove( did: req.params.id , (err) =>
if (err)
return res.send(err);
);
);
【讨论】:
【参考方案2】:您可能会在运行代码时看到这一点,但不推荐使用 Model.remove()。相反,我推荐 Model.deleteOne(),以防在未来的更新中不再支持它。
【讨论】:
以上是关于无法访问 express js router.delete 中的参数的主要内容,如果未能解决你的问题,请参考以下文章
无法访问我的站点中的链接(复制和粘贴):Node.js - Express.js - Webpack - Vue.js - 历史模式
express-jwt 无法从路由目录访问 req.user