[英]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.put
和router.delete
更改為router.post
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.