Trước hết, bạn không cần gọi foundUser.save () khi đang sử dụng phương thức foundUser.update ().
Và, tất cả các phương pháp trên hầu như hiệu quả như nhau vì có hai lệnh gọi được thực hiện đến cơ sở dữ liệu. Vì vậy, nó phụ thuộc vào sở thích cá nhân của bạn.
Và, một phương thức khác chỉ với một lệnh gọi đến cơ sở dữ liệu có thể được thực thi theo cách này:-
let foundUser = await userModel.findOneAndUpdate(
{ email: recievedEmail, password: hashedPassword },
{ $set: { lastLogin: new Date() }, $push: { myEvents: authEvent } }
);
Trong phương pháp này, nếu người dùng có email và mật khẩu đã cho tồn tại, người dùng đó sẽ được cập nhật và tài liệu cập nhật tương ứng sẽ được trả lại trong foundUser
Biến đổi. Vì vậy, bạn không phải thực hiện kiểm tra thêm mật khẩu:If findOneAndUpdate()
trả về một tài liệu, nó có nghĩa là mật khẩu và email trùng khớp. Bạn chỉ cần kiểm tra null hoặc undefined trên tài liệu được trả về để xem có khớp nào không.