Първо, не е необходимо да извиквате foundUser.save(), когато използвате метода foundUser.update().
И всички горепосочени методи са почти еднакво ефективни, тъй като има две извиквания към базата данни. Така че, всичко се свежда до вашите лични предпочитания.
И още един метод само с едно извикване на базата данни може да бъде изпълнен по този начин:-
let foundUser = await userModel.findOneAndUpdate(
{ email: recievedEmail, password: hashedPassword },
{ $set: { lastLogin: new Date() }, $push: { myEvents: authEvent } }
);
При този метод, ако съществува потребител с даден имейл и парола, този потребител ще бъде актуализиран и съответният актуализиран документ ще бъде върнат в foundUser
променлива. Така че не е нужно да извършвате допълнителна проверка на паролата:Ако findOneAndUpdate()
връща документ, това означава съвпадение на парола и имейл. Трябва само да проверите за null или undefined във върнатия документ за липса на съвпадение.