Prima di tutto, non è necessario chiamare foundUser.save() quando si utilizza il metodo foundUser.update().
Inoltre, tutti i metodi precedenti sono quasi ugualmente efficienti in quanto vengono effettuate due chiamate al database. Quindi, dipende dalle tue preferenze personali.
E un altro metodo con una sola chiamata al database può essere eseguito in questo modo:-
let foundUser = await userModel.findOneAndUpdate(
{ email: recievedEmail, password: hashedPassword },
{ $set: { lastLogin: new Date() }, $push: { myEvents: authEvent } }
);
In questo metodo, se esiste un utente con l'e-mail e la password specificate, quell'utente verrà aggiornato e il documento aggiornato corrispondente verrà restituito in un foundUser
variabile. Quindi non devi eseguire un ulteriore controllo sulla password:If findOneAndUpdate()
restituisce un documento, significa password ed email abbinate. Devi solo verificare la presenza di null o undefined sul documento restituito per nessuna corrispondenza.