Ich habe ein Array namens blog.likes, und ich möchte überprüfen, ob die ID des aktuell angemeldeten Benutzers (req.user._id) bereits existiert die Reihe von Likes. Wenn dies der Fall ist, löschen Sie die ID aus dem Array, wenn sie die Benutzer-ID nicht innerhalb des Arrays hinzufügt. Mit dem Code, den ich jetzt habe, wenn ich den Like-Button einmal gedrückt habe, gefällt mir der Post, wenn ich ihn erneut drücke, löscht er den Like, aber wenn ein Post ein Like hat und ich mich mit einem anderen Benutzer anmelde und den Like-Button mehrfach drücke, startet es um alle Likes zu löschen, nicht nur die Likes, die von einem Benutzer erstellt wurden.Finden, ob eine Zeichenfolge bereits in einem Array von Zeichenfolgen vorhanden ist -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();
}
Die Shift-Array-Methode sucht nicht nach dem Array-Element mit einem Wert gleich einem Parameter und entfernt es. Es entfernt das erste Element aus dem Array. Sie entfernen also das erste Element aus dem Array, das nicht das richtige Element ist, und das nächste Mal, wenn Ihre Benutzer-ID immer noch da ist. – James