带有router.PUT和router.delete的PUT和GET方法不起作用(express)



我正在构建一个CRUD应用程序。我被更新和删除操作卡住了,其他一切似乎都在工作。所以我使用方法覆盖来发送PUT和GET请求。

这是相关代码:

app.js

const methodOverride = require('method-override');
app.use(methodOverride('_method'));

以下是我为更新和删除所写的内容。我正在使用mongodb的monk驱动程序。

index.js

var router = express.Router();
router.put('/videos/:id', function(req, res){
var collection = db.get('videos');
var item = {
title: req.body.title,
genre: req.body.genre,
image: req.body.image,
description: req.body.desc
};
var id = req.params.id;
collection.update(
{_id: id}, {
$set: item
});
res.redirect('/videos');
});
router.delete('/videos/:id', function(req, res){
var collection = db.get('videos');
collection.remove({"_id" : req.params.id});
res.redirect('/videos');
});

对于删除表单

<form action="/videos/<%= video._id %>?_method=DELETE" method="POST">
<button type="submit" class="btn btn-danger">Delete video</button>
</form>

对于更新表单

<form method="POST" action="/videos/<%= video._id %>?_method=PUT">
<input type="hidden" name="_method" value="PUT">
</form>

我搜索了很多地方,当我点击提交按钮时,仍然会收到一个网页未找到(404(错误。我错过了什么?提交按钮应该调用我在index.js中显示的两个方法。

检查是否导出了index.js文件并将其导入到app.js中,我认为它应该可以正常工作,但试着重新启动服务器,看看它是否工作。:(

form方法和express路由不匹配。

两者的表单方法分别为POST。

但是,如果您查看express路由,方法是PUT和DELETE。

尝试更改路线,然后再次测试是否有效。

我将router.putrouter.delete更改为router.post

最新更新