无法访问 express js 中的参数 router.delete
unable to access parms in expressjs router.delete
这是我的代码片段,其中我使用了 Express 路由器和 Mongoose 模型。
我无法访问 id 参数。
router.delete('/task/:id', function (req, res) {
Task.remove({ did: req.parms.id }, (err) => {
if (err) {
res.send(err);
}
});
});
这是我收到的错误
TypeError: Cannot read property 'id' of undefined
at F:\NS\routes\tasks.js:11:33
at Layer.handle [as handle_request] (F:\NS\node_modules\express\lib\router\layer.js:95:5)
at next (F:\NS\node_modules\express\lib\router\route.js:131:13)
at Route.dispatch (F:\NS\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (F:\NS\node_modules\express\lib\router\layer.js:95:5)
at F:\NS\node_modules\express\lib\router\index.js:277:22
at param (F:\NS\node_modules\express\lib\router\index.js:349:14)
at param (F:\NS\node_modules\express\lib\router\index.js:365:14)
at Function.process_params (F:\NS\node_modules\express\lib\router\index.js:410:3)
at next (F:\NS\node_modules\express\lib\router\index.js:271:10)
at Function.handle (F:\NS\node_modules\express\lib\router\index.js:176:3)
at router (F:\NS\node_modules\express\lib\router\index.js:46:12)
at Layer.handle [as handle_request] (F:\NS\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (F:\NS\node_modules\express\lib\router\index.js:312:13)
at F:\NS\node_modules\express\lib\router\index.js:280:7
at Function.process_params (F:\NS\node_modules\express\lib\router\index.js:330:12)
at next (F:\NS\node_modules\express\lib\router\index.js:271:10)
at F:\NS\node_modules\express-validator\lib\express_validator.js:291:5
at Layer.handle [as handle_request] (F:\NS\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (F:\NS\node_modules\express\lib\router\index.js:312:13)
at F:\NS\node_modules\express\lib\router\index.js:280:7
at Function.process_params (F:\NS\node_modules\express\lib\router\index.js:330:12)
访问路由参数时,对象不是 parms
,它是 params
. 因为 parms
总是 undefined
你会得到这个问题,因为您正在尝试访问 undefined
的 属性,而您无法访问。
router.delete('/task/:id', (req, res) => {
Task.remove({ did: req.params.id }, (err) => {
if (err)
return res.send(err);
});
});
当您 运行 代码时,您可能会看到这一点,但是 Model.remove() 已被弃用。相反,我建议使用 Model.deleteOne(),以防将来的更新不再支持它。
这是我的代码片段,其中我使用了 Express 路由器和 Mongoose 模型。
我无法访问 id 参数。
router.delete('/task/:id', function (req, res) {
Task.remove({ did: req.parms.id }, (err) => {
if (err) {
res.send(err);
}
});
});
这是我收到的错误
TypeError: Cannot read property 'id' of undefined at F:\NS\routes\tasks.js:11:33 at Layer.handle [as handle_request] (F:\NS\node_modules\express\lib\router\layer.js:95:5) at next (F:\NS\node_modules\express\lib\router\route.js:131:13) at Route.dispatch (F:\NS\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request] (F:\NS\node_modules\express\lib\router\layer.js:95:5) at F:\NS\node_modules\express\lib\router\index.js:277:22 at param (F:\NS\node_modules\express\lib\router\index.js:349:14) at param (F:\NS\node_modules\express\lib\router\index.js:365:14) at Function.process_params (F:\NS\node_modules\express\lib\router\index.js:410:3) at next (F:\NS\node_modules\express\lib\router\index.js:271:10) at Function.handle (F:\NS\node_modules\express\lib\router\index.js:176:3) at router (F:\NS\node_modules\express\lib\router\index.js:46:12) at Layer.handle [as handle_request] (F:\NS\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (F:\NS\node_modules\express\lib\router\index.js:312:13) at F:\NS\node_modules\express\lib\router\index.js:280:7 at Function.process_params (F:\NS\node_modules\express\lib\router\index.js:330:12) at next (F:\NS\node_modules\express\lib\router\index.js:271:10) at F:\NS\node_modules\express-validator\lib\express_validator.js:291:5 at Layer.handle [as handle_request] (F:\NS\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (F:\NS\node_modules\express\lib\router\index.js:312:13) at F:\NS\node_modules\express\lib\router\index.js:280:7 at Function.process_params (F:\NS\node_modules\express\lib\router\index.js:330:12)
访问路由参数时,对象不是 parms
,它是 params
. 因为 parms
总是 undefined
你会得到这个问题,因为您正在尝试访问 undefined
的 属性,而您无法访问。
router.delete('/task/:id', (req, res) => {
Task.remove({ did: req.params.id }, (err) => {
if (err)
return res.send(err);
});
});
当您 运行 代码时,您可能会看到这一点,但是 Model.remove() 已被弃用。相反,我建议使用 Model.deleteOne(),以防将来的更新不再支持它。