0

在 connect-redis 中返回会话值使用 .get(sid, callback) 但它总是返回 null 所以我认为它没有保存在 redis 但我在调查后检查它会话保存在 redis 中正确发现问题与 Sid 见 /connect-redis /lib/connect-redis.js

  RedisStore.prototype.get = function(sid, fn){
   sid =this.prefix + sid;
    debug('GET "%s"', sid);

    console.log('lib');
    console.log(sid);

    this.client.get( sid , function(err, data){

      if (err) return fn(err);
      if (!data) return fn(null,'');
      var result;
      data = data.toString();
      debug('GOT %s', data);
      try {
        result = JSON.parse(data); 
      } catch (err) {
        return fn(err);
      }

      return fn(null, result);
    });
  };

如果我将 sessionID 作为字符串,它将返回会话

  RedisStore.prototype.get = function(sid, fn){

  //  sid =this.prefix + sid;
    debug('GET "%s"', sid);

    console.log('lib');
    console.log(sid);

    this.client.get( 'lweUw//EdbygbGr/2gAZt0kb' , function(err, data){

      if (err) return fn(err);
      if (!data) return fn(null,'');
      var result;
      data = data.toString();
      debug('GOT %s', data);
      try {
        result = JSON.parse(data); 
      } catch (err) {
        return fn(err);
      }

      return fn(null, result);
    });
  };

笔记:

typeof(sid) 是字符串,即使像这样 "\'sid\'" 将 qoute 添加到 sid 也会返回 null

4

1 回答 1

2

回调采用形式callback(err, data)。如果没有错误,第一个参数将始终为null. 真正的响应在第二个参数中。

参见:return fn(null, result);.get().

于 2013-08-04T09:19:54.210 回答