【问题标题】:Recommended way to delete object in MongoDB based on a route基于路由在 MongoDB 中删除对象的推荐方法
【发布时间】:2015-07-22 02:12:02
【问题描述】:

MEAN 堆栈开发的新手,但喜欢它!我想以一种不基于意见的方式提出这个问题,如果是,请原谅我。

假设我有一个管理仪表板,列出了 MongoDB 集合中的对象。每个项目都有一个删除按钮,该按钮具有此方案的 href:href="/admin/ministry/delete/:id" 其中:id 是数据库中要删除的对象的 ID。

现在我有一个路由设置,可以成功地将请求路由到控制器,但我想知道这是否是删除对象的最佳方法。例如,一旦我单击对象的删除按钮,它就会被删除,然后我们返回仪表板,但 URL 仍然是这样的:http://localhost:3000/admin/ministry/delete/554b88546d280ab11603b062

所以基本上我的问题是,在从数据库中删除对象时,您对我的路由和控制器有什么建议。

路由器

var admin_ministry_controller = require('./controllers/admin/ministry_controller.js');
app.get('/admin/ministry/delete/:id', ministry_controller.delete);

控制器

var mongoose = require('mongoose');
var Ministry = mongoose.model("Ministry");

exports.delete = function(req, res) {
    Ministry.findOne({_id:req.params.id}).exec(function(err, ministry){
        if(ministry) {
           ministry.remove();
        }

        var query = Ministry.find();
        query.exec(function(err, doc) {
            res.render('admin/ministry', {title: 'Next Steps | Ministry', msg: "Deleted Ministry", ministries: doc});
        });

    });
}

【问题讨论】:

    标签: node.js mongodb express routes


    【解决方案1】:

    我建议您使用 RESTful API 结构。看看 API 的样子:

    在您的情况下,要删除ministry,用户应向/api/admin/ministry/:id 发送DELETE 请求。

    路由器应该是这样的:

    app.delete('/admin/ministry/:id', ministry_controller.delete);
    

    【讨论】:

    • 我理解这个概念,它非常有意义。但是我要问的是,如果我希望能够单击链接并以这种方式删除对象,该怎么办。您只能通过单击链接发出GET 请求,我不知道我也可以使用 AJAX 来完成,因为我已经这样做了。我的意思是为method=delete列出的每个对象创建一个表单的最佳方法?
    • 您是对的,您需要为每个项目指定方法delete,以便它会发送PUT 请求。你试过这样吗? <a data-confirm="Are you sure?" data-method="delete" href="/api/admin/ministry/1" rel="nofollow">Destroy</a>
    猜你喜欢
    • 2021-03-24
    • 1970-01-01
    • 2011-05-31
    • 2013-12-20
    • 2011-08-08
    • 1970-01-01
    • 2015-11-24
    • 2017-01-30
    • 1970-01-01
    相关资源
    最近更新 更多