【问题标题】:Set req.session in mongoose model在猫鼬模型中设置 req.session
【发布时间】:2017-02-26 18:14:18
【问题描述】:

大家好,我正在尝试通过处理在我的用户模型中设置的所有值来简化会话设置。我怎样才能实现以下目标:

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?

【问题讨论】:

  • 当然:将其作为参数传递...
  • @robertklep 我试过了,它说无法读取未定义的属性会话
  • 在这种情况下,还有其他问题,例如会话中间件未在您调用 .setSession() 的路由之前声明。

标签: node.js express mongoose mongoose-schema express-session


【解决方案1】:

我利用猫鼬来获取用户的所有数据。然后我将该数据传递给 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);
}

【讨论】:

    猜你喜欢
    • 2014-12-09
    • 2018-10-09
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 2013-04-14
    • 1970-01-01
    • 2017-10-05
    相关资源
    最近更新 更多