繁体   English   中英

为什么我的快速路由适用于“/”而不适用于“/:id”?

[英]why does my express route work for "/" but not "/:id"?

我正在解决为什么我的路线不起作用的问题,但我遇到了这个问题。

在我的 ./routes/jobs.js 中,

router.delete("/:id", (req, res) => {
  Job.findByIdAndDelete(req.params.id, (err, job) => {
    if (!err) {
      res.json({ msg: "job deleted"});
    } else {
      console.log(err);
    }
  });
});

当我在邮递员上测试时,删除 - http://localhost:5000/dashboard/60b9405e1ea

将仅返回 id 60b9405e1ea而不会删除数据库作业。

我将路线更改为“/”并对其进行了测试。 在邮递员中使用http://localhost:5000/dashboard

router.delete("/", (req, res) => {
  Job.findByIdAndDelete(req.params.id, (err, job) => {
    if (!err) {
      res.json({ msg: "job deleted"});
    } else {
      console.log(err);
    }
  });

它使用{msg: "job deleted"}执行删除请求。 (显然没有删除数据库作业,因为没有给出 id)。

请记住我正在使用的 server.js,

app.use("/dashboard", require("./routes/jobs"));

关于为什么 /:id 没有被执行的任何帮助将不胜感激

当您在控制台中获取 id 时,这是您进行的查询的问题。 尝试其中任何一个,

Model.remove({ _id: req.body.id }, function(err) {
    if (!err) {
        message.type = 'notification!';
    }
    else {
        message.type = 'error';
    }
});

或者

Model.findOneAndRemove({id: req.params.id}, function(err){
});

或传统方法:

Model.findById(id, function (err, doc) {
    if (err) {
        // handle error
    }

    doc.remove(callback); //Removes the document
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM