我跑npm install
后面临一个奇怪的问题。
在`requireManager()(或任何控制器)中访问时req.user
的实例是Array类型,而不是从passport.deserializeUser返回的对象。
passport.deserializeUser(function(id, done) {
compound.models.User.findById(id, function(err, user) {
done(err, user);
});
});
控制器中的console.log(req.user.constructor)打印
function Array() { [native code] }
和
console.log(user.constructor) in `passport.deserializeUser` prints:
function model(doc, fields, skipId) {
if (!(this instanceof model))
return new model(doc, fields, skipId);
Model.call(this, doc, fields, skipId);
}
请帮我解决这个问题。
此致 萨钦
答案 0 :(得分:1)
万一有人从谷歌搜索结束(像我这样)。
在passport.deserializeUser
中,在模型上使用findById
返回一个数组,使用findOne
或将user[0]
传递给done
。
passport.deserializeUser(function (id, done) {
myModel.findOne(id, function (err, user) {
done(err, user);
});
});