Za prvé, když používáte metodu foundUser.update(), nemusíte volat foundUser.save().
A všechny výše uvedené metody jsou téměř stejně účinné, protože do databáze probíhají dvě volání. Záleží tedy na vašich osobních preferencích.
A ještě jedna metoda s pouze jedním voláním databáze může být provedena tímto způsobem:-
let foundUser = await userModel.findOneAndUpdate(
{ email: recievedEmail, password: hashedPassword },
{ $set: { lastLogin: new Date() }, $push: { myEvents: authEvent } }
);
V této metodě, pokud existuje uživatel s daným e-mailem a heslem, bude tento uživatel aktualizován a odpovídající aktualizovaný dokument bude vrácen v foundUser
variabilní. Nemusíte tedy provádět další kontrolu hesla:Pokud findOneAndUpdate()
vrátí dokument, to znamená, že heslo a e-mail se shodují. Musíte pouze zkontrolovat, zda je ve vráceném dokumentu null nebo undefined, aby nedošlo k žádné shodě.