Node.js req.user已更改为数组对象
在运行Node.js req.user已更改为数组对象,node.js,express,passport.js,compoundjs,Node.js,Express,Passport.js,Compoundjs,在运行npm安装后,我遇到了一个奇怪的问题 访问`requireManager()(或任何控制器)时,req.user的实例是数组类型,而不是passport.deserializeUser返回的对象 passport.deserializeUser(function(id, done) { compound.models.User.findById(id, function(err, user) { done(err, user); }); }); 控制器打
npm安装后,我遇到了一个奇怪的问题
访问`requireManager()(或任何控制器)时,req.user
的实例是数组类型,而不是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] }
及
请帮我解决这个问题
问候,,
萨钦以防有人通过谷歌搜索(比如我)来到这里
在passport.deserializeUser
中,在模型上使用findById
返回一个数组,使用findOne
或将user[0]
传递到done
passport.deserializeUser(function (id, done) {
myModel.findOne(id, function (err, user) {
done(err, user);
});
});
你能发布你的(反)序列化用户实现吗?编辑了帖子并包含反序列化用户我对CompoundJS不太熟悉,但它会覆盖req.user
本身吗?您的反序列化用户
看起来不错。谢谢,我自己也这么做了,但决定搜索一个更“合法”的答案。我不知道findById返回了一个数组,但这解释了这种奇怪的行为。
passport.deserializeUser(function (id, done) {
myModel.findOne(id, function (err, user) {
done(err, user);
});
});