Node.js 连接会话中间件-重新生成与重新加载

Node.js 连接会话中间件-重新生成与重新加载,node.js,connect,express,Node.js,Connect,Express,我试图了解Connect的会话中间件,我想知道:Session.regenate()和Session.reload()之间的区别 具体地说,我检查了文档,没有解释会话重载的实际作用。同样,我也对Session.save()方法感到困惑。非常感谢您的帮助 比较两个函数的源代码: store.js Store.prototype.regenerate = function(req, fn){ var self = this; this.destroy(req.sessionID, funct

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


具体地说,我检查了文档,没有解释会话重载的实际作用。同样,我也对Session.save()方法感到困惑。非常感谢您的帮助

比较两个函数的源代码:

store.js

Store.prototype.regenerate = function(req, fn){
  var self = this;
  this.destroy(req.sessionID, function(err){
    self.generate(req);
    fn(err);
  });
};
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;
});

session.js

Store.prototype.regenerate = function(req, fn){
  var self = this;
  this.destroy(req.sessionID, function(err){
    self.generate(req);
    fn(err);
  });
};
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;
});

我将其理解为“如果会话存在,请获取会话或创建会话”,而不是“销毁以前的会话并给我一个新会话”。

这两个链接现在都已断开。@SoundDefense我刚刚用存储库当前位置的代码片段编辑了答案,这应该可以帮助任何偶然发现此答案的人