gpt4 book ai didi

javascript - 关于node.js中passport.js模块 "deserializeUser"的效率

转载 作者:行者123 更新时间:2023-12-03 09:32:45 28 4
gpt4 key购买 nike

所以我正在研究有关passport.js模块的文档serialize users 将登录用户保持在 session 中。 (略高于用户名和密码部分)。我正在使用 mongodb 和 mongoose

passport.deserializeUser(function(id, done) {
console.log("this code is used again! ");
User.findById(id, function(err, user) {
done(err, user);
});
});

我在他们给出的示例中测试了这些代码。所以看起来每次登录用户刷新页面时都会执行这段代码。

假设有 100,000 个用户,整个应用程序中有 10 个页面,这意味着将有 100 万次查找,只是为了维护每个页面的 session 状态。这听起来是不是效率太低了?大多数应用程序都会进行这种数据库搜索吗?

还是我理解错了?

最佳答案

没有什么可以阻止您使用缓存或类似的方法。其中之一可能是https://www.npmjs.com/package/cache-manager但一定要购买更多!

或者,如果您确实不需要一直知道所有用户信息,您可以仅序列化/反序列化用户 ID 并按需加载用户记录。在您的实例中只需传递函数:

passport.deserializeUser(function(id, done) {
console.log("this code is used again! ");
done(null, id);
});

如果这还不够,您可以反序列化为这样的对象:

passport.deserializeUser(function(id, done) {
console.log("this code is used again! ");
done(null, {id: id, user: function(done){
User.findById(id, function(err, user) {
done(err, user);
});
}});
});

关于javascript - 关于node.js中passport.js模块 "deserializeUser"的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31448247/

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