下面我有一个用户可以发出的帖子请求,如果删除了名为_method
的隐藏表单项,它将向我自己的服务器发出请求到另一个路由并从数据库中删除帖子。这个过程应该如何运作?
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");
});
答案 0 :(得分:1)
假设Express / Connect,methodOverride()
可能是最简单的选择:
app.use(express.bodyParser());
app.use(express.methodOverride());
但是,<form action>
和路线path
应匹配:
<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
。