节点服务器 - res.redirect使用'PUT'方法。需要'GET'

时间:2015-04-01 21:10:36

标签: node.js redirect get response put

使用MEAN堆栈。

我创建了一个mongoose调用来更新mongodb集合中的文档。这是有效的,没问题。但是,当更新完成后,我想通过服务器控制器“简单地”重定向到我的'/ search'页面。

重定向适用于我的另一个mongoose保存调用,这是一个简单的“POST”。

然而,当我在'PUT'之后调用重定向时,重定向使用PUT而不是GET,导致404,无法找到方法PUT / search。这是正确的!但是我不确定为什么选择'PUT'方法。我可以强行'GET'吗?

Chrome控制台日志:

PUT http://localhost:3000/search 404 (Not Found)
angular.js:9827 (anonymous function)angular.js:9628 sendReqangular.js:9344 serverRequestangular.js:13189 
processQueueangular.js:13205 
(anonymous function)angular.js:14401 
Scope.$evalangular.js:14217 Scope.$digestangular.js:14506
Scope.$applyangular.js:21440 (anonymous function)angular.js:3014 eventHandler

我的快递路线使用的是护照,所以需要认证的所有页面都通过我的index.js。 (见要点)。我的mongoose调用所有调用直接从我的视图或控制器通过/ api / ... route进入服务器。

希望这是一个快速解决方案。

我的代码在一个要点。 https://gist.github.com/astemborskim/419d49f0f773fa623a90

客户端控制器 - 调用服务器以执行更新(工作)

    $scope.updateProduct = function() {
    //$scope.edited.inv = $scope.edited.searchSKU;
    $scope.edited.inv.SKU = $scope.edited.SKU;
    $scope.edited.inv.Product_Name = $scope.edited.Name;
    $scope.edited.inv.Product_Description = $scope.edited.Desc;
    $scope.edited.inv.Quantity = $scope.edited.quantity;
    $scope.edited.inv.Product_Location = $scope.edited.locations;
    //console.log('Edited: ' + JSON.stringify($scope.edited.inv));
    //console.log('Not Edited: ' + JSON.stringify($scope.prod.currentProd));
    var inventory = new Inventory($scope.edited.inv);
    //console.log('edited.inv._id: ' + $scope.edited.inv._id);
    inventory.$update({id : $scope.edited.inv._id}, inventory, function (err, results){
        if(err){};
        console.log(results);
    });
}

服务器控制器 - 无法重定向:

    module.exports.editInventory = function(req, res){
Product.update({_id : req.body._id}, req.body, function (err, results){
    if(err){
        req.flash('message', 'Error Updating Product');
        console.log('Error Updating Product: ' + err);
        throw err;
    }
    req.flash('message','Product Updated Successfully!');
    res.redirect('/search');
});

};

如果您需要其他信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

尝试服务器控制器中的res.send(200);和客户端控制器回调中的location.reload();