[英]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.