【问题标题】:node.js connect-redis redis.get(key,callback) return nullnode.js connect-redis redis.get(key,callback) 返回 null
【发布时间】:2013-08-04 17:19:54
【问题描述】:

在 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

【问题讨论】:

  • 看看你的回调函数会很有帮助。

标签: javascript node.js


【解决方案1】:

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

请参阅:return fn(null, result); in .get()

【讨论】:

  • 没有数据返回它返回的响应 if condition see (!data) return fn(null,'');
  • 您说它在您的问题中返回了null。空字符串不是null。返回值的类型是字符串吗?
猜你喜欢
  • 1970-01-01
  • 2022-12-29
  • 2018-10-10
  • 2018-03-24
  • 1970-01-01
  • 2021-12-30
  • 2015-02-25
  • 2011-07-22
  • 1970-01-01
相关资源
最近更新 更多