使用mongoose通过Id删除对象

时间:2018-06-03 19:05:12

标签: javascript node.js express callback

我尝试创建API以使用mongoose删除mongodb上的文档。

这是我的路线

router
    .route("/tasks")
    .delete('/:id', function (res, err) {
        taskSchema.findByIdAndRemove(req.params.id, (err, tasks) => {
            if (err) return res.status(500).send(err);
            const response = {
                message: "Todo successfully deleted",
                id: req.params.id
            };
            return res.status(200).send(response);
        });
    });

我收到此错误

  

错误:Route.delete()需要一个回调函数,但得到一个[object String]

1 个答案:

答案 0 :(得分:1)

/tasks/tasks/:id是两条不同的路线,你应该这样处理它们,如果你使用/tasks来显示所有任务,为它做一条路线,并建立第二条路线对于您已拥有ID的每次互动;也就是说删除,更新和使用没有ID的路由,用于没有ID的交互,比如创建任务:

router
  .route("/tasks")
    .get(/* return all tasks */)
    .post(/* create a task */);

router
  .route("/tasks/:id")
    .delete(function (req, res) {
        taskSchema.findByIdAndRemove(req.params.id, (err, tasks) => {
            if (err) return res.status(500).send(err);
            const response = {
                message: "Todo successfully deleted",
                id: req.params.id
            };
            return res.status(200).send(response);
        });
    });