猫鼬:有没有一种方法可以通过使用单个猫鼬更新操作来实现此功能?

时间:2019-01-19 11:41:49

标签: node.js mongodb mongoose mongodb-query

我正在使用一个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”)来做到这一点?

1 个答案:

答案 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")

    });

});

这应该有效:);