下面我有一个用户可以发出的帖子请求,如果删除了名为 _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");
});
最佳答案
假设 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
.
关于node.js - 如何允许用户删除帖子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14918734/