findOneAndUpdate从数组中删除元素,否则将其放在那里

时间:2017-04-03 04:46:35

标签: javascript arrays node.js express mongoose

是否可以编写一个findOne并更新,如果它存在,则从数组中删除元素,但如果不存在则添加它。

我在“评论”集合中有一个usefulnotUseful数组。当用户点击一次有用的按钮时,我希望将userId添加到有用的数组中,当他再次点击它时,它应该被取消。另外我想确保如果他点击有用的按钮并且他在notUseful数组中,我们将他从notUseful数组中拉出来。这就是为什么你看到我在下面做pull

以下仅在我多次点击按钮时添加了userId一次,但我希望findOneAndUpdate在按钮点击时添加和删除id。

function updateArray(){
    var userID = req.user._id ? req.user._id : req.session.anon._id;
    if(req.body.type = "useful"){
        return Review.findOneAndUpdate({_id : req.body.id}, {$addToSet : {useful : userID}, $pull : {notUseful : userID}}, {new : true})
    }


}
updateArray()
    .then(reviewDoc =>{
        console.log("reviewDoc", reviewDoc)
    })
    .catch(err => {console.log(err)})

我想知道是否有一种简单的方法可以使用findOneAndUpdate

也许有一些条件查询魔法我用它来一次性完成。

我可能会在查询对象中进行测试以查看有用的数组是否具有id但是如果它没有Id我也想做某事(我不知道该怎么做。)我希望它在1次调用数据库时最好用findOneAndUpdate

完成

0 个答案:

没有答案