在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作为字符串,它将返回session
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
发布于 2013-08-04 17:19:54
回调采用callback(err, data)的形式。如果没有错误,第一个参数将始终为null。真正的响应在第二个参数中。
请参阅:.get()中的return fn(null, result);
https://stackoverflow.com/questions/18041240
复制相似问题