我正在使用nodejs + expressjs + mongoosejs作为网络应用。我有一个想法,但不知道它是对的。
当用户登录系统时,我查询mongodb进行授权,该查询以json格式返回用户文档作为结果,我可以忽略它并继续下一步。但我想我可以使用lean()设置获取mongoose文档对象,并将其放入会话中。所以如果使用用户的信息进行任何进一步的操作,我可以使用会话中的那个,不需要再次查询它。如果用户想要更新他的状态,我可以保存这个对象,不需要findByIdAndUpdate,对吧?像这样:
// This is the user login process on express
exports.login = function(req, res, next) {
// do nothing if login info are not enough
if (!req.body.email || !req.body.password) {
res.status(400).json({
title: msgMissAuthInfoTitle,
msg: msgMissAuthInfo
});
}
// look up user info (the req.body has user's email and password)
User.findOne(req.body)
.lean(false) // here I set it to false to get a mongoose document object
.exec(function(err, user) {
// pass if error happend
if (err) next(err);
// if the account not found, return the fail message
else if (!user) {
res.status(401).json({
title: msgAuthFailedTitle,
msg: msgAuthFailed
});
}
// if account could be found
else {
// put account(the mongoosejs document object) into session
req.session.user = user;
res.json({
msg: "welcome!"
});
}
});
};
而且,比如,用户想要更新他的出生日:
// This is user info update process on express
exports.update = function(req, res, next) {
// Could it be simple like this?
req.session.user.set('birthDay', req.body.birthDay).save(function(err, updatedUser) {
if (err) next(err);
else res.send(updatedUser);
});
};
我应该这样做吗?这个想法有什么问题吗?
感谢任何提示。