繁体   English   中英

Express.js CRUD应用程序无法删除

[英]Express.js CRUD Application Cannot DELETE

我有一个CRUD Express.js Web应用程序。 当我应用Delete方法时,出现404 No Found错误。

在app.js文件中

var campagnes = require('./routes/campagnes');
app.use('/campagnes', campagnes);

在route / campagnes.js文件中

var express = require('express');
var router = express.Router();
var campagne_controller = require('../controllers/campagneController');

router.delete('/delete/:id', campagne_controller.campagne_delete);

//In Controllers/campagneController.js file 

var Campagne = require('../models/campagne');

exports.campagne_delete = function(req,res){


    Campagne.findById(req.params.id)
        .exec(function(err, row){
            if (err) {
                var errornya  = ("Error Selecting : %s ",err );
                req.flash('msg_error', errornya);
                res.redirect('/campagnes');
            }
            else
            {
                if(row == [])
                {
                    req.flash('msg_error', "Campagne can't be find!");
                    res.redirect('/campagnes');
                }
                else
                {
              // I don't delet but just change campagne status to annulee
                     row.status = 'annulee';
                    // Success - go to campagne list
                    req.flash('msg_info', 'La campagne a été marquée comme annulée');
                    res.redirect('/campagnes');
                }
            }
        });
}

在views / campagne / list.jade文件中

p.text-right
    a.text-right(href='/campagnes/delete/#{campagne._id}')
         | Annuler la campagne
hr

当我单击list.jade视图中的链接时,出现404 Not Found错误,并且不知道为什么。 我试图查找我的代码是否有错误,但没有发现任何错误

您没有以DELETE方法发送请求。 您正在使用a自标签使用GET方法的标签。 如果要DELETE应该使用ajax调用。

我用像下面的按钮替换了链接:

 form(method='post', action='/campagnes/delete/#{campagne._id}') input(type="hidden",name="_method", value="DELETE") button.btn.btn-sm.btn-danger(type='submit', style='float: right') Annuler la campagne br 

然后在我的控制器中输入以下代码:

 exports.campagne_delete = function(req,res){ Campagne.findById(req.params.id) .exec(function(err, row){ if (err) { var errornya = ("Error Selecting : %s ",err ); req.flash('msg_error', errornya); res.redirect('/campagnes'); } else { if(row == []) { req.flash('msg_error', "Campagne can't be find!"); res.redirect('/campagnes'); } else { doc = new Campagne({ status:'annulee', _id:req.params.id }); // Data from form is valid. Update the record. Campagne.findByIdAndUpdate(req.params.id, doc, {}, function (err, thecampagne) { if (err) { var errors_detail = ("Error Update : %s ", err ); req.flash('msg_error', errors_detail); res.redirect('/campagnes'); } }); // Success - go to customer list req.flash('msg_info', 'La campagne a été marquée comme annulée'); res.redirect('/campagnes'); } } }); } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM