0

跑步后我遇到了一个奇怪的问题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);
    }

请帮我解决这个问题。

问候, 萨钦

4

1 回答 1

1

万一有人从谷歌搜索(比如我)到这里。

passport.deserializeUser中,findById在模型上使用会返回一个数组,使用findOne或传递user[0]done

passport.deserializeUser(function (id, done) {
    myModel.findOne(id, function (err, user) {
        done(err, user);
    });
});
于 2015-08-10T08:45:37.187 回答