API删除不更新数据库[重复]

Posted

技术标签:

【中文标题】API删除不更新数据库[重复]【英文标题】:API Delete not updating DB [duplicate] 【发布时间】:2018-01-13 08:47:03 【问题描述】:

所以我的 API 中有这个请求,该请求由按下按钮时运行的获取请求调用:

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));
);

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

是的,它是空的,但是有一个用户的 ID 被传递,这很奇怪。 不能进入if里面的条件。 items._id 是 ObjectID,对吧?你可以使用方法 .equals ,或者先用 toString() 解析【参考方案2】:

要删除,您可以这样做。但是,如果要更改状态,您只需要更新自己.. 发布您传递的参数

    User.findOneAndRemove(_id: req.params.id , function(err)...)

【讨论】:

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

以上是关于API删除不更新数据库[重复]的主要内容,如果未能解决你的问题,请参考以下文章

reactjs - 状态更改后组件不呈现[重复]

在Android中更新firebase数据库时ListView值重复值

删除动画完成后更新 TableView [重复]

SQL 更新删除

ElasticSearch Java Api-5.x删除和更新索引数据

用CTE处理表重复数据的更新和删除