连接会话中间件 - 重新生成和重新加载

jef*_*eon 5 connect node.js express

我试图了解Connect的Session中间件,我想知道它们之间的区别:Session.regenerate()和Session.reload().

具体来说,我查看了文档,并没有解释会话重新加载实际上做了什么.同样,我也对Session.save()方法感到困惑.任何帮助非常感谢!

jco*_*and 7

比较两个函数的源代码:

store.js

Store.prototype.regenerate = function(req, fn){
  var self = this;
  this.destroy(req.sessionID, function(err){
    self.generate(req);
    fn(err);
  });
};
Run Code Online (Sandbox Code Playgroud)

session.js

defineMethod(Session.prototype, 'reload', function reload(fn) {
  var req = this.req
    , store = this.req.sessionStore;
  store.get(this.id, function(err, sess){
    if (err) return fn(err);
    if (!sess) return fn(new Error('failed to load session'));
    store.createSession(req, sess);
    fn();
  });
  return this;
});
Run Code Online (Sandbox Code Playgroud)

我把它读成"如果它存在或创建一个会话"vs"破坏前一个并给我一个新的".

  • @TheSoundDefense我刚刚从存储库的当前位置编辑了代码片段的答案,这应该可以帮助任何偶然发现这个答案的人 (2认同)