私はblog.likesという配列を持っています。現在ログインしているユーザー(req.user._id)のIDが既に内部に存在するかどうかを確認したい好きな配列。もしそうであれば、配列からidを削除します。そうでなければ、配列の中にユーザIDを追加します。コードでは、私は今すぐ私は好きなときに私はそれをもう一度それを削除するようなボタンを押した場合、私は好きですが、投稿が好きで、私は別のユーザーとログインし、 1人のユーザーによって作成されたお気に入りだけでなく、すべてのお気に入りを削除することができます。文字列の配列内に文字列が既に存在するかどうかを調べる--javascript
if (blog.likes.indexOf(req.user._id) > -1){
blog.likes.shift(req.user._id);
blog.save();
} else {
blog.likes.push(req.user);
blog.save();
}
シフト配列メソッドは、値がパラメータと等しい配列要素を探して削除しません。配列から最初の要素を削除します。したがって、正しい要素ではない配列から最初の要素を削除していて、次にユーザーIDがそこに残っています。 – James