我正在使用一个API调用,该调用通过查看用户是否具有dp(显示图片)的天气来删除用户的显示图片,dp是字符串(aws s3链接)。
如果用户的dp中没有任何内容,那么如果他的帐户中有任何内容,则什么也不会发生,则将图像删除,并将条目更新为“”。
这就是我尝试过的。
router.post('/deleteDP',jwtValid,function (req,res) {
user.findById({'_id': req.decoded.id}, function (err, result) {
if(err){return res.send("1");} //error
else if(!result){return res.send("2");} //no user found
else if(result)
{
if(result.dp === "")
{
///send deleted
res.send("0");
}else
{
// delete function for result.dp
user.findByIdAndUpdate({'_id':result.id},{$set:{'dp':''}},function (err,result) {
if(result){return res.send("0");}
});
}
}
});
});
有没有办法使用单个mongodb操作而不是上面代码中使用的两个(“ findByIdAndUpdate”和“ findById”)来做到这一点?
答案 0 :(得分:0)
是的,有一种方法:
router.post('/deleteDP',jwtValid,function (req,res) {
user.findOneAndUpdate({$and:[{'_id': req.decoded.id},{db:{$exists:true}}]},{$set:{'dp':''}}, function (err, result) {
if(!err){
if(!result){
return res.send("2")
}
res.send("0");
}
res.send("1")
});
});
这应该有效:);