2016-10-17 140 views
0

嘿家伙我想通过处理在我的用户模型中设置的所有值来使会话设置非常简单。我怎样才能达到以下效果:在猫鼬模型中设置req.session

userSchema.methods.setSession = function() { 
    var user = req.session.user; //create the session object 

    //set any values I want here 
    user.firstName = this.firstName; 
    user.lastName = this.lastName; 
    user.school = this.school; 
    user.email = this.email; 
    user.admin = this.admin; 
    user.moderator = this.moderator; 
} 

我遇到的问题是没有定义req。有没有办法在这里访问请求?

+1

肯定的:它作为参数传递... – robertklep

+0

@robertklep我试过了,它说不能读取属性未定义的会话 –

+0

在这种情况下,会出现其他问题,例如会话中间件未在调用'.setSession()'的路由之前声明。 – robertklep

回答

0

我利用猫鼬抓取用户的所有数据。然后,我将这些数据传递给setSession方法并设置所有期望的会话数据。现在,如果我需要一个新的会话变量,我可以在我的用户模型中更新它。

这是我的解决方案。在我的路线,我把:

user = new User(); 
userData = someUserObjectIPulledFromMongo; 

//pass user data to setSession function 
user.setSession(userData ,req, function (data) { 

}); 

我我的用户模型中提出的方法:

userSchema.methods.setSession = function (user, req, callback) { 
    //specify any desired session data in here 
    sessionData = { 
     firstName: user.firstName, 
     lastName: user.lastName, 
     email: user.email, 
    } 
    //pass temporary session object to req.session 
    req.session.user = sessionData; 
    callback(true); 
}