ExpressJS - res.redirect после запроса DELETE
Я все время искал, как это сделать - я пытаюсь перенаправить после выполнения запроса УДАЛИТЬ - вот код, который я использую БЕЗ НАПРАВЛЕНИЯ:
exports.remove = function(req, res) {
var postId = req.params.id;
Post.remove({ _id: postId }, function(err) {
if (!err) {
console.log('notification!');
res.send(200);
}
else {
console.log('error in the remove function');
res.send(400);
}
});
};
remove
вызывается, когда элемент (сообщение) удаляется. Все отлично работает (пришлось использовать res.send(200)
чтобы он не зависал при запросе на удаление) - но теперь у меня возникают проблемы с перенаправлением. Если я использую res.redirect('/forum')
внутри remove
функция, как это:
exports.remove = function(req, res) {
var postId = req.params.id;
Post.remove({ _id: postId }, function(err) {
if (!err) {
console.log('notification!');
res.send(200);
}
else {
console.log('error in the remove function');
res.send(400);
}
res.redirect('/forum');
});
};
Он регистрирует перенаправление как DELETE
запрос, который пытается удалить /forum
, как это:
DELETE http://localhost:9000/forum 404 Not Found 4ms
Все, что я пытаюсь сделать, это обновить страницу, чтобы список сообщений обновлялся после удаления. Кто-нибудь может помочь?
3 ответа
Я получил это работает на моей угловой стороне с $window.location.href = '/forum';
- просто поместите его в функцию успеха $http
запрос, который является частью delete
функция, которая выполняется при нажатии кнопки "Удалить".
Я знаю, что уже поздно, но для тех, кто видит это позже, вы также можете вручную сбросить метод HTTP на GET, который также должен работать
exports.remove = function(req, res) {
var postId = req.params.id;
Post.remove({ _id: postId }, function(err) {
if (!err) {
console.log('notification!');
res.send(200);
}
else {
console.log('error in the remove function');
res.send(400);
}
//Set HTTP method to GET
req.method = 'GET'
res.redirect('/forum');
});
};
Решение @ewizard отлично, если вы можете исправить это на внешнем интерфейсе. Однако, если вы хотите исправить это на сервере, вы можете добавить необязательный аргумент Code Status в res.redirect
вот так:
res.redirect(303, "/forum");
Это перенаправляет для "неопределенной причины", которая по умолчанию будет перенаправлением GET.
Смотрите этот SO пост для получения дополнительной информации.