2013-02-17 9 views
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"); 
}); 
+0

Почему бы не запросить запрос пользователя DELETE, а не POST, который вы затем перенаправляете? –

+0

@JohnZwinck http://stackoverflow.com/a/166501 –

ответ

1

Предполагая, Экспресс/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.

+0

Не было никакой подсказки, которая выражала поддержку этого готового продукта. – ThomasReggi