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删除不更新数据库[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在Android中更新firebase数据库时ListView值重复值