Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在connect redis中重复前缀_Node.js_Redis_Connect - Fatal编程技术网

Node.js 在connect redis中重复前缀

Node.js 在connect redis中重复前缀,node.js,redis,connect,Node.js,Redis,Connect,我正在尝试在我的web应用程序中使用connect redis:“~3.0.1”和express会话:“~1.12.1”来存储用户会话。但当我在Redistore中给出前缀字段时,它会重复两次。如果我做错了什么,请告诉我 “我的会话:我的会话:YZO1MrHloEnumylKaZ2NZPRCfCfCfFmNHY” “我的会话:我的会话:0L8prCJAoq0CmJ9tTwTJ_smQ4fH2R_H9” 在搜索过程中,我遇到了与laravel代码类似的问题: 请告诉我这里是否发生了类似的事情,如

我正在尝试在我的web应用程序中使用connect redis:“~3.0.1”和express会话:“~1.12.1”来存储用户会话。但当我在Redistore中给出前缀字段时,它会重复两次。如果我做错了什么,请告诉我

“我的会话:我的会话:YZO1MrHloEnumylKaZ2NZPRCfCfCfFmNHY” “我的会话:我的会话:0L8prCJAoq0CmJ9tTwTJ_smQ4fH2R_H9”

在搜索过程中,我遇到了与laravel代码类似的问题:

请告诉我这里是否发生了类似的事情,如果是,解决方法是什么

下面是我正在使用的代码:

var sessionMiddleware = session({
 secret : 'secretPass',
 store: new RedisStore({
   prefix:'mySession:',
   ttl: 1800}),
 resave: false,
 saveUninitialized: false
});

app.use(function (req, res, next) {
  var tries = 3;

  function lookupSession(error) {
    if (error) {
      return next(error);
    }

   tries -= 1

   if (req.session !== undefined) {
     return next();
   }

   if (tries < 0) {
     var errorMsg = 'Error in getting session. Please refresh the page.';
     return next(new Error(errorMsg));      
   }

   sessionMiddleware(req, res, lookupSession);
 }

 lookupSession();
})
var sessionMiddleware=会话({
秘密:“秘密通行证”,
商店:新商店({
前缀:'mySession:',
ttl:1800}),
resave:false,
saveUninitialized:false
});
应用程序使用(功能(请求、恢复、下一步){
var=3;
函数lookupSession(错误){
如果(错误){
返回下一个(错误);
}
尝试-=1
如果(请求会话!==未定义){
返回next();
}
如果(尝试<0){
var errorMsg='获取会话时出错。请刷新页面';
返回下一个(新错误(errorMsg));
}
sessionMiddleware(req、res、lookupSession);
}
lookupSession();
})

我能够通过事先创建redis客户端并将其传递给会话对象(如下所述)来解决这个问题,而不是依赖connect redis为我创建它

redis_client = require('redis').createClient();

var sessionMiddleware = session({
  secret : 'secretPass',
  store: new RedisStore({
    prefix:'mySession:',
    ttl: 1800,
    client: redis_client}),
  resave: false,
  saveUninitialized: false
}))

如果我没有传递客户端,则connect-redis.js中的以下代码将在创建redis客户端时传递选项,然后添加一个额外的前缀

// convert to redis connect params
if (options.client) {
  this.client = options.client;
}
else if (options.socket) {
  this.client = redis.createClient(options.socket, options);
}
else {
   this.client = redis.createClient(options);
}

已在connect redis的3.0.2版中修复