Был вопрос о update()
против save()
, но он был нацелен на некоторые другие вещи (я думаю, чисто связанные mongoose.Schema
методы, но не на настоящий документ)
У меня есть следующий сценарий, когда пользователь входит на сайт:
- Мне нужно загрузить документ (найдите его по
userModel.email
)
- Проверьте, соответствует ли хэш
userModel.password
тому, что было получено
- Обновление
userModel.lastLogin
отметка времени
- Добавить событие авторизации к
userModel.myEvents[]
массиву
Так что мне интересно - Как правильно идти?
1)
let foundUser = userModel.findOne({ email: recievedEmail });
if(foundUser.password != recievedPassword)
return res.status(400).json({e: "invalid pass"});
foundUser.lastLogin = new Date();
foundUser.myEvents.push(authEvent)
foundUser.save();
2)
let foundUser = userModel.findOne({ email: recievedEmail });
if(foundUser.password != recievedPassword)
return res.status(400).json({e: "invalid pass"});
foundUser.update({
$push: { myEvents: authEvent },
$set: { lastLogin: new Date() }
});
foundUser.save();
3)
let foundUser = userModel.findOne({ email: recievedEmail });
if(foundUser.password != recievedPassword)
return res.status(400).json({e: "invalid pass"});
userModel.updateOne({_id: foundUser._id}, {$push: ...
// seems no save is required here?
4) * * тысяча тридцать-семь
// I am doing it wrong, and you have faster/higher/stronger variant?