2017-08-31 40 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'并查看它是否有效 –

相关问题