gpt4 book ai didi

node.js - Passport.js 异步与同步反序列化

转载 作者:搜寻专家 更新时间:2023-10-31 23:52:56 24 4
gpt4 key购买 nike

我正在我的应用程序上实现支付功能,我的提供商需要 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。

最佳答案

你的问题在这里:

AccountId: toString(req.user._id),

toString 是一个对象的方法。在浏览器中,简单地调用 toString 假设您指的是 window.toString() 并且它返回 [object Window]。在 Node 中,由于全局窗口不存在,您得到 [object Undefined]

认为您调用该函数的方式应该是这样的:

 AccountId: req.user._id.toString(),

关于node.js - Passport.js 异步与同步反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36383404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com