Først og fremmest behøver du ikke kalde foundUser.save(), når du bruger metoden foundUser.update().
Og alle ovenstående metoder er næsten lige effektive, da der foretages to opkald til databasen. Så det kommer ned til din personlige præference.
Og endnu en metode med kun et kald til databasen kan udføres på denne måde:-
let foundUser = await userModel.findOneAndUpdate(
{ email: recievedEmail, password: hashedPassword },
{ $set: { lastLogin: new Date() }, $push: { myEvents: authEvent } }
);
I denne metode, hvis der findes en bruger med en given e-mail og adgangskode, vil denne bruger blive opdateret, og det tilsvarende opdaterede dokument vil blive returneret i en foundUser
variabel. Så du behøver ikke at udføre en ekstra kontrol af adgangskoden:Hvis findOneAndUpdate()
returnerer et dokument, betyder det, at password og e-mail matches. Du skal bare tjekke for null eller udefineret på det returnerede dokument for ingen match.