【发布时间】:2019-03-22 15:52:30
【问题描述】:
有一个question about update() vs 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?
【问题讨论】:
标签: node.js mongodb mongoose passwords authorization