Tout d'abord, vous n'avez pas besoin d'appeler foundUser.save() lorsque vous utilisez la méthode foundUser.update().
Et, toutes les méthodes ci-dessus sont presque aussi efficaces car il y a deux appels à la base de données. Donc, cela dépend de vos préférences personnelles.
Et, une autre méthode avec un seul appel à la base de données peut être exécutée de cette manière :-
let foundUser = await userModel.findOneAndUpdate(
{ email: recievedEmail, password: hashedPassword },
{ $set: { lastLogin: new Date() }, $push: { myEvents: authEvent } }
);
Dans cette méthode, si un utilisateur avec une adresse e-mail et un mot de passe donnés existe, cet utilisateur sera mis à jour et le document mis à jour correspondant sera renvoyé dans un foundUser
variable. Vous n'avez donc pas à effectuer une vérification supplémentaire du mot de passe :Si findOneAndUpdate()
renvoie un document, cela signifie que le mot de passe et l'e-mail correspondent. Vous avez juste à vérifier null ou undefined sur le document retourné pour aucune correspondance.