Allereerst hoeft u foundUser.save() niet aan te roepen wanneer u de methode foundUser.update() gebruikt.
En alle bovenstaande methoden zijn bijna even efficiënt omdat er twee aanroepen naar de database worden gedaan. Het komt dus neer op uw persoonlijke voorkeur.
En nog een methode met slechts één aanroep naar de database kan op deze manier worden uitgevoerd:-
let foundUser = await userModel.findOneAndUpdate(
{ email: recievedEmail, password: hashedPassword },
{ $set: { lastLogin: new Date() }, $push: { myEvents: authEvent } }
);
Bij deze methode, als een gebruiker met het opgegeven e-mailadres en wachtwoord bestaat, wordt die gebruiker bijgewerkt en wordt het bijbehorende bijgewerkte document geretourneerd in een foundUser
variabel. U hoeft dus geen extra controle op het wachtwoord uit te voeren:If findOneAndUpdate()
een document retourneert, betekent dit dat wachtwoord en e-mailadres overeenkomen. U hoeft alleen te controleren op null of undefined op het geretourneerde document voor geen overeenkomst.