【发布时间】:2016-07-22 20:36:08
【问题描述】:
我正在我的应用程序上实现支付功能,我的提供商需要AccountId(我系统中的用户标识)和Email。我注意到一些我无法用 Passport.js 解释的奇怪行为。首先,反序列化看起来像在文档中:
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
现在,我知道这是一个异步操作,但是当我为请求生成数据时,我会这样做:
var data = {
AccountId: toString(req.user._id),
Email: req.user.auth.local.email
// ...
}
由于某种原因,Email 设置正确,但 AccountId 总是返回 [object Undefined]。好吧,我想这可能是由于 Passport 的反序列化的异步性质(因为它需要时间来 User.findById()),但是为什么 Email 设置正确呢?
我找到了一种将 AccountId 设置为 req.session.passport.user 的方法,但对我来说这似乎是一种 hack。
【问题讨论】:
标签: node.js express asynchronous passport.js