Javascript 使用router.PUT和router.delete的PUT和GET方法不工作(express)

Javascript 使用router.PUT和router.delete的PUT和GET方法不工作(express),javascript,html,node.js,express,Javascript,Html,Node.js,Express,我正在构建一个CRUD应用程序。我被更新和删除操作卡住了,其他一切似乎都在工作。所以我使用方法重写来发送PUT和GET请求 以下是相关代码: app.js const methodOverride = require('method-override'); app.use(methodOverride('_method')); var router = express.Router(); router.put('/videos/:id', function(req, res){ va

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

以下是相关代码:

app.js

const methodOverride = require('method-override');
app.use(methodOverride('_method'));
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');
});
以下是我为更新和删除所写的内容。我使用mongodb的monk驱动程序

index.js

const methodOverride = require('method-override');
app.use(methodOverride('_method'));
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)错误。 我错过了什么?
submit按钮应该调用我在
index.js

中显示的两种方法,检查是否导出index.js文件并将其导入app.js, 我认为它应该可以正常工作,但试着重新启动服务器,看看它是否可以工作。:)

表单方法和快捷路线不匹配

两者的表单方法分别为POST

但是,如果查看express routes,则该方法将被放置和删除


尝试更改路由并再次测试是否有效。

我更改了
路由器。放置
路由器。删除
路由器。发布

HTML源代码中实际呈现了什么?404,找不到网页。抱歉,我说的是表单的来源。来源是一个表单,用户可以在其中输入详细信息,然后输出到数据库。是的,我理解。我希望你可以共享html表单。你是否从index.js导出路由并导入到app.js文件中?是的,我确实这样做
module.exports=router
。它们作为POST请求发送,方法覆盖将它们转换为PUT和DELETE请求。这是我从方法重写文档中读到的。我想删除并将其放入数据库。标准的帖子要求不合适。那么我认为你应该包括正确的标签。有相关知识的人可以回答这个问题。我不这么认为,这是node.js或javascript问题。包含问题的库标签