所以有人点击了类似的按钮。它将在下面调用此函数。我需要它不要推动同一个用户两次。此外,如果再次按下like按钮,它将表现为不喜欢或删除,所以它应该从这个喜欢的数组中删除用户。我怎么做?这就是我到目前为止所拥有的
chapterController.likeChapter = function (req, res) {
var userId = req.body.by;
var chapterId = req.body.chapterId;
Chapter.findOne({
_id: chapterId
}, function(err, chap){
if(chap.likes.indexOf(userId) !== -1){
chap.likes.pull(userId);
}else{
chap.likes.addToSet(userId);
}
chap.save();
})
Chapter.findByIdAndUpdate(chapterId, {
$push: {
likes: userId
}
}, {}, function(err, obj) {
if (err) {
console.log(err);
} else {
Chapter.find({_id: chapterId}).then(function (chapter) {
var chapter = chapter;
Comment.find({chapterId: chapterId}).then(function(data){
return res.send({ commentList : data, user: req.user, chapter: chapter});
//console.log(chapter);
});
})
}
});
};
更新:到目前为止,它完成了我发布的大部分内容。我需要它来删除所有重复项。不只是一个。
答案 0 :(得分:0)
我不完全知道您的数据模型,但在Chapter.findByIdAndUpdate的回调中,您可以像这样映射用户ID;
obj.userid.map((userIdFromDb) => {
if(userIdFromDb !== userId) {
do something...
}
})
但我强烈建议你,如果你有时间增长的数据,不要使用mongodb。在这种情况下,您可以使用关系数据库,mongo将为您保存静态。
答案 1 :(得分:0)