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

时间:2015-07-16 07:45:46

标签: javascript node.js mongodb passport.js

所以我正在查看有关passport.js模块serialize用户的文档,以便在会话中保持登录用户。 (略高于用户名和密码部分)。我使用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万个查找,只是为了保持每个人的会话状态。这听起来效率不高吗?大多数应用程序是否进行此类数据库搜索?

或者我是否误解了?

1 个答案:

答案 0 :(得分:1)

没有什么可以阻止你使用缓存或类似的方法。其中一个可能是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);
       });
   }});
});
相关问题