2016-10-17 2 views
0

Привет, ребята, я стараюсь сделать настройку сеанса очень простой, обрабатывая все значения, установленные в моей модели User. Как я могу достичь:Установить req.session в модели mongoose

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 не определен. Есть ли способ получить доступ к req здесь?

+1

Sure: передать его в качестве аргумента ... – robertklep

+0

@robertklep Я попробовал это, и это говорит, что не может читать недвижимость session undefined –

+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); 
} 
Смежные вопросы