2017-08-31 42 views
0

我正在構建一個非常簡單的應用程序,以使用Express和Mongodb實踐RESTful路由。無法從Express應用程序中刪除MongoDB

我的問題是,每當我嘗試運行DELETE路線,我得到以下錯誤:Cannot DELETE /wordlist/59a7194293de6e03630401f6

這裏是刪除路線:

app.delete("wordlist/:id", function(req, res){ 
    Word.findByIdAndRemove(req.params.id, function(err){ 
    if(err){ 
     res.redirect("/"); 
    } else { 
     res.redirect("/wordlist"); 
    } 
    }); 
}); 

這裏是我使用的形式使用ejs運行刪除路由:

<form action="/wordlist/<%= word._id %>?_method=DELETE" method="POST"> 
    <button> 
    Delete this word 
    </button> 
</form> 

另外,我已經安裝並使用了方法覆蓋。

任何想法我做錯了什麼?

回答

2

問題就出在路由您指定:

app.delete("wordlist/:id"...

你缺少一個領導斜線。 更改爲

app.delete("/wordlist/:id"... 它應該工作。

+0

Ha!一千個謝謝你! –

0

你需要改變你的形式使用Delete動詞

<form action="/wordlist/<%= word._id %>" method="DELETE"> 
    <button> 
    Delete this word 
    </button> 
</form> 
+0

這不起作用,因爲HTML5中的表單標籤只允許GET和POST方法。相反,你必須使用一個包,例如方法覆蓋(我正在使用)發送一個DELETE請求。當我進行了建議的更改時,即使我指定了DELETE,它也會作爲GET請求發送。所以謝謝,但那不是我正在尋找的答案。 相關鏈接: https://softwareengineering.stackexchange.com/questions/114156/why-are-there-are-no-put-and-delete-methods-on-html-forms –

+0

哦,沒有意識到這一點 –

+0

嘗試將'app.delete'更改爲'app.post'並查看它是否有效 –

相關問題