node.js连接redis redis.get(key,callback)返回null

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

本文关键字:redis callback 返回 null js 连接 get node key      更新时间:2023-09-26

在connect-redis中返回会话值use.get(sid,callback)但它总是返回null,所以我认为它没有保存在redis中,但我在调查后检查了它会话保存在reds中的正确性,发现问题是Sid see/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'''"这样将qute添加到sid,它也会返回null

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

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