我试图从一个对象数组中进行简单的删除。我将对象的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}}显示了未定义的变量。
答案 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帮助我得出结论!