Pertama-tama, Anda tidak perlu memanggil foundUser.save() saat Anda menggunakan metode foundUser.update().
Dan, semua metode di atas hampir sama efisiennya karena ada dua panggilan yang dilakukan ke database. Jadi, itu tergantung pada preferensi pribadi Anda.
Dan, satu metode lagi hanya dengan satu panggilan ke database dapat dijalankan dengan cara ini:-
let foundUser = await userModel.findOneAndUpdate(
{ email: recievedEmail, password: hashedPassword },
{ $set: { lastLogin: new Date() }, $push: { myEvents: authEvent } }
);
Dalam metode ini, jika ada pengguna dengan email dan sandi yang diberikan, pengguna tersebut akan diperbarui dan dokumen yang diperbarui terkait akan dikembalikan dalam foundUser
variabel. Jadi Anda tidak perlu melakukan pemeriksaan tambahan pada kata sandi:If findOneAndUpdate()
mengembalikan dokumen, itu berarti kata sandi dan email cocok. Anda hanya perlu memeriksa apakah ada null atau undefined pada dokumen yang dikembalikan jika tidak ada kecocokan.