2016-10-17 106 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); 
}