2017-08-05 89 views
0

所以我在我的API这个请求是由一个叫上一个按钮按下读取请求运行:API删除不更新DB

router.delete('/itemDelete/:id', function(req, res, next){ 
    User.findOne({_id: req.params.id}).then(function(user){ 
    var userTemp = user; 
    var items = user.items; 
    var i = 0; 
    for(i=0; i<items.length; i++){ 
     if(items._id == req.body.itemID){ 
     items.splice(i,1); 
     } 
    } 
    userTemp.items = items; 
    User.findByIdAndUpdate(req.params.id, userTemp, function(err, user){ 
     res.send(user); 
    }); 
    }).catch((err) => console.error(err)); 
}); 

代码运行并没有错误,但数据库没有变化。

回答

0

要删除,你可以这样做。但如果改变现状只有你需要做更新自己张贴的参数要传递

User.findOneAndRemove({_id: req.params.id }, function(err){...}) 
+0

这将删除整个用户不会吗?我只想删除存储在用户模型中的项目。 –

1

确保该块不是错误。没有错误检查,无论err是否为空。 cmiiw

User.findByIdAndUpdate(req.params.id, userTemp, function(err, user){ console.log("error:",err);res.send(user); }; 
+0

是的,它是空的,但有一个用户与传递的ID是奇怪的。 –

+0

如果内部不可以输入条件。 items._id是ObjectID,对不对?你可以使用方法.equals,或先用toString()解析 –