如何让用户删除post?
在下面,我有一个用户可以发出的发布请求,如果名称为_method
的隐藏表单项目被删除,它将向我自己的服务器发出一个请求到不同的路由,并从数据库中删除这个post。 这个过程应该如何工作?
app.post("/posts/:id/delete", function(req, res){ if(req.body._method = "delete"){ request({ "method": "delete", "url": "/posts/"+req.param.id }, function(err, response, body){ res.redirect("/posts"); }); } }); app.delete("/posts/:id", function(req, res){ //delete it from the database res.redirect("/posts"); });
假设Express / Connect, methodOverride()
可能是最简单的select:
app.use(express.bodyParser()); app.use(express.methodOverride());
虽然, <form action>
和pathpath
应该匹配:
<form action="/posts/{{id}}" method="post"> <input type="_method" value="delete" /> <!-- ... --> </form>
app.delete('/posts/:id', function (req, res) { //delete it from the database res.redirect("/posts"); });
[更新]随着Express 4和更新,这个中间件已经转移到method-override
。