【问题标题】:Delete object by Id using mongoose使用 mongoose 按 Id 删除对象
【发布时间】:2018-11-13 03:55:11
【问题描述】:

我正在尝试使用 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]

【问题讨论】:

    标签: javascript node.js express callback


    【解决方案1】:

    /tasks/tasks/:id 是两条不同的路线,如果您使用 /tasks 显示所有任务,请为此创建路线,并为您已经完成的每次交互创建第二条路线有身份证;也就是删除、更新和使用没有 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);
            });
        });
    

    【讨论】:

    • 完全同意!!
    • 即使将/:id 添加到路由后,我也会遇到同样的错误
    • @HamzaHaddad 对,现在应该可以了,我忘了删除.delete()的额外第一个参数
    • 我收到req is not defined
    • 你不应该再看到那个错误了,你那里的问题比我一开始看到的要多
    猜你喜欢
    • 1970-01-01
    • 2018-06-17
    • 1970-01-01
    • 2017-01-04
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    相关资源
    最近更新 更多