nodeclub源码问题
在看cnode官网的源码的时候发现了这么一段代码
if (req.session.user) {
ep.emit('get_user', req.session.user);
} else {
}
每次发现session里面有user时又重新生成一个对象,这是个什么逻辑
ep.all('get_user', function (user) {
if (!user) {
return next();
}
user = res.locals.current_user = req.session.user = new UserModel(user);
}
请各位不吝赐教
10 回复
之所以要套一层 UserModel,是因为 redis 里面取出来的 req.session.user 只是 plain object,所以要把它封装成 mongoose 的对象,才能调用一些附加的属性和方法。
@alsotang 我之前还在想如何将session.user 这个plain object 如何转为 mongoose对象,后来特意用 UserModel.findOne 搜索返回一个 mongoose 对象。 看到 alsotang 大大这用法才焕然大悟。