繁体   English   中英

关于node.js中passport.js模块“ deserializeUser”的效率

[英]Regarding efficiency of passport.js module “deserializeUser” in node.js

因此,我一直在研究有关licensea.js模块序列化用户的文档,以使登录的用户保持会话状态。 (在“用户名和密码”部分的上方)。 我在用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万次查找,只是为了保持每个用户的会话状态。 这听起来效率不高吗? 大多数应用程序都进行这种数据库搜索吗?

还是我误会了?

没有什么可以阻止您使用缓存或类似方法。 其中之一可能是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);
       });
   }});
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM