我有一个名为blog.likes的数组,我想查看当前登录用户(req.user._id)的id是否已存在于like数组中。如果确实如此,那么从数组中删除id,如果没有,则在数组中添加用户id。使用我现在的代码,如果我按下喜欢按钮一旦它喜欢的帖子,如果我再次按它删除了类似但如果一个帖子有一个喜欢和我登录与不同的用户并按下像按钮很多次它开始删除所有喜欢的不仅仅是由一个用户制作的喜欢。
function myFunc(arg1, [optionsObject,] callback)
答案 0 :(得分:2)
shift函数只会删除数组中的第一个元素,不注意登录的用户ID。使用splice功能可以获得所需的结果。 将您的代码更改为:
let userIndex = blog.likes.indexOf(req.user._id);
if (userIndex > -1) {
blog.likes.splice(userIndex, 1);
} else {
blog.likes.push(req.user);
}
blog.save();
答案 1 :(得分:0)
正如我在评论中提到的.shift()不是正确的使用方法。试一试:
var f = blog.likes.indexOf(req.user._id);
if (f > -1 ) {
blog.likes.splice(f, 1);
} else {
blog.likes.push(req.user);
}
blog.save();