首页 > 解决方案 > 使用 mongoose 按 Id 删除对象

问题描述

我正在尝试使用 mongoose 创建 API 来删除 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]

标签: javascriptnode.jsexpresscallback

解决方案


/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);
        });
    });

推荐阅读