node.js connect-redis redis.get(key,callback)返回null

时间:2013-08-04 08:43:16

标签: javascript node.js

在connect-redis中返回会话值使用.get(sid,callback)  但它总是返回null,所以我认为它不能保存在redis中,但是在调查发现问题与Sid之后我检查会话保存正确的redis,请参阅/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)是字符串,即使将qoute添加到sid就像这个“\'sid \'”它将返回null

1 个答案:

答案 0 :(得分:1)

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

请参阅return fn(null, result);中的.get()