ExpressJS - DELETE请求后的res.redirect

时间:2014-07-15 05:03:49

标签: javascript redirect express request http-delete

我一直在搜索如何执行此操作 - 我正在尝试在发出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的{​​{1}}请求,如下所示:

/forum

我要做的就是刷新页面,以便在删除后更新帖子列表。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:4)

我知道这已经很晚了,但是对于后来看到这个的人来说,你也可以手动将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');
  });
};

答案 1 :(得分:3)

@pwizard的解决方案非常棒,如果你能在前端解决这个问题。但是,如果要在后端修复此问题,可以向res.redirect添加可选的状态代码参数,如下所示:

res.redirect(303, "/forum");

这会重定向“未定义的原因”,默认为GET重定向。

有关详细信息,请参阅this SO post

答案 2 :(得分:2)

我使用$window.location.href = '/forum';在我的Angular端工作 - 只需将它放在$http请求的成功函数中,该delete请求是&{{1}}函数的一部分,当& #34;删除"单击按钮。