0

実行した後、奇妙な問題に直面していnpm installます。

req.user`requireManager() (または任意のコントローラー) でアクセスする場合のインスタンスは、passport.deserializeUser から返されるオブジェクトではなく、Array 型です。

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

誰かがGoogle検索からここにたどり着いた場合(私のように)。

では、モデルpassport.deserializeUserで using を使用すると、 useまたは pass tofindByIdのいずれかの配列が返されます。findOneuser[0]done

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