使用Passport获取Mongoose虚拟属性

时间:2017-01-07 19:39:12

标签: javascript node.js mongodb mongoose passport.js

我试图从请求中的护照用户对象访问mongoose模型中定义的一些虚拟属性,但我得到的只是持久字段。

有没有办法在不再查询的情况下获取虚拟属性?

修改

模型:

var UserSchema = new Schema({
    firstname: {
        type: String,
    },
    lastname: {
        type: String,
    },
    email: {
        type: String,
    },
    password: {
        type: String,
        required: true
    },
});

UserSchema.virtual('fullName').get(function() {
   return (this.firstname + this.lastname); 
});

module.exports = mongoose.model('User', UserSchema);

用户控制器:

exports.sayHi = function(req, res, next) {
    res.send('Hi ' + req.user.fullName);
}

护照配置:

var User = mongoose.model('User');

passport.serializeUser(function(user, done) {
    done(null, user.id);
});

passport.deserializeUser(function(id, done) {
    User.findOne({
            _id: id
        },
        '-password',
        function(err, user) {
            done(err, user);
        }
    );
});

0 个答案:

没有答案