无法访问 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(),以防将来的更新不再支持它。