1

下面我有一个用户可以发出的帖子请求,如果_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");
});
4

1 回答 1

1

假设 Express/Connect,methodOverride()可能是最简单的选择:

app.use(express.bodyParser());
app.use(express.methodOverride());

但是,<form action>and 路由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.

于 2013-02-17T09:40:39.343 回答