2017-08-31 15 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

ハ!千あなたありがとう! –

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'に変更してみて、それが動作するかどうか確認してください。 –

関連する問題