router.put 和 router.delete 的 PUT 和 GET 方法不起作用(快速)

我正在构建一个 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。


一只萌萌小番薯
浏览 172回答 3
3回答

梵蒂冈之花

我改变了router.put和。router.deleterouter.post

哔哔one

表格方式与快捷路线不匹配。两者的表单方法分别是POST。但是,如果您查看快速路线,方法是 PUT 和 DELETE。尝试更改路线并再次测试是否有效。

胡说叔叔

检查您是否导出了index.js 文件并将其导入到app.js 中,我认为它应该可以正常工作,但请尝试重新启动服务器并查看它是否有效。:)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript