почему мой express маршрут работает для "/", но не для "/: id"? - PullRequest
0 голосов
/ 15 января 2020

Я решил, почему мой маршрут не работает, и наткнулся на это.

В моем ./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

Возвращает только идентификатор 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"}. (Очевидно, что не удалил задание db, так как идентификатор не был указан).

Имейте в виду, на моем сервере. js я использую,

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

Любая помощь будет признательна, почему /: Идентификатор не выполняется

1 Ответ

0 голосов
/ 16 января 2020

Когда вы получаете идентификатор в консоли, это проблема с вашим запросом. Попробуйте любой из них,

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
})
...