传递变量而不是后端

时间:2015-12-16 20:16:54

标签: angularjs node.js mongodb express

我试图从一个对象数组中进行简单的删除。我将对象的id传递给后端,但是当我将参数输出到终端时,它只打印一个空数组。

我的 Angular 正在将对象传递给服务器:

server.delete("/removeFavoriteRecipe/:id",favRecipeController.removeFavoriteRecipe);

我使用req.params将其传递给后端

这是我认为打嗝发生的地方。一旦到达后端,ID就不在var removeFavoriteRecipe = function(req, res){ console.log(req.params._id); if(req.user){ userModel.User.update({_id: req.user._id}, {$pull :{favoriteRecipes: {_id: req.params._id}}}, function(err){ if(err){ res.send(err); }else{ res.send("success!"); } }); }else{ var err = {err: "You are not logged in."}; res.send(err); } } 中:

console.log(favorite._id);

console.log(req.params._id);显示了ID,但{{1}}显示了未定义的变量。

2 个答案:

答案 0 :(得分:0)

编辑:DELETE不允许使用正文数据,因此您可以将请求更改为PUT并使用以下代码,或使用原始代码并获取网址。

Req.body立即可用,您需要通过chuck将其添加到字符串chuck中,然后在流结束时从其中创建一个对象:

var removeFavoriteRecipe = function(req, res){

    let data = "";
    req.on('data', function(chunk) {
      // append the current chunk of data to the fullBody variable
      data += chunk.toString();

    });

    if(req.user){
        req.on('end', function() {
            let body = JSON.parse(data)
            userModel.User.update({_id: req.user._id}, {$pull :{favoriteRecipes: {_id: body._id}}}, function(err){
                if(err){
                    res.send(err);
                }else{
                    res.send("success!");
                }
            }); 
        });

    }else{
        var err = {err: "You are not logged in."};
        res.send(err);
    }
}

答案 1 :(得分:0)

找出问题所在:我应该使用put代替delete,但是当我刚刚发送favorite._id时,我也会发回favorite

这是我的新代码:

<强>角:

$scope.removeFavoriteRecipe = function(favorite){
    var deleteIt = confirm("Are you sure you want to remove this recipe from your favorites?");
    if(deleteIt){
        console.log(favorite._id)
        $http.put("/removeFavoriteRecipe", favorite)
        .then(function(returnData){
            if(returnData.data.err){
                $scope.err = returnData.data.err;
            }else{
                $scope.err = "";
                $window.location.reload();
            }
        })
    }
}

服务器

server.put("/removeFavoriteRecipe", favRecipeController.removeFavoriteRecipe);  

<强>节点

var removeFavoriteRecipe = function(req, res){
    console.log(req.body._id);
    if(req.user){
        userModel.User.update({_id: req.user._id}, {$pull :{favoriteRecipes: {_id: req.body._id}}}, function(err){
            if(err){
                res.send(err);
            }else{
                res.send("success!");
            }
        }); 
    }else{
        var err = {err: "You are not logged in."};
        res.send(err);
    }
}

特别感谢bstockwell帮助我得出结论!