簡體   English   中英

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

[英]PUT and GET methods with router.put and router.delete not working (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 中,我認為它應該可以正常工作,但請嘗試重新啟動服務器並查看它是否有效。 :)

表單方法和快速路由不匹配。

兩者的表單方法分別是 POST。

但是,如果您查看快速路線,則該方法是 PUT 和 DELETE。

嘗試更改路線並再次測試是否有效。

我將router.putrouter.delete更改為router.post

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM