是否可以编写一个findOne并更新,如果它存在,则从数组中删除元素,但如果不存在则添加它。
我在“评论”集合中有一个useful
和notUseful
数组。当用户点击一次有用的按钮时,我希望将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