1

我在 nodejitsu 上创建了一个 Redis 数据库并获得了完整的 URI,例如:

 nodejitsu:nodejitsudb11158161232.redis.irstack.com:f327c9sj29sj26e80b8e975fbebb4@nodejitsudb3058169sj32.redis.irstack.com

Connect-redis 想要一个主机、端口等...有人知道我可以将这个字符串传递给它的简单方法吗?将主机设置为该模式时似乎不起作用 - mongodb 似乎在此模式下工作正常。

4

2 回答 2

1

使用url.parse http://nodejs.org/docs/latest/api/url.html将该 url 解析为主机、端口等部分。

于 2012-11-20T20:52:45.707 回答
0

因此,深入研究源代码似乎无法解析 dsn 字符串。url.parse 不返回必要的信息,因此必须进一步分解。

完整的 dsn 也有 redis:// 协议——它必须在那里才能工作。因为我的本地 redis dsn 字符串没有密码/用户,所以会检查它以防它丢失:

var redisUrl = 'redis://nodejitsu:nodejitsudb3051531232.redis.irstack.com:fd470c971946e8der75fbebb4@nodejitsudb305813frt232.redis.irstack.com:6379';

var redis = url.parse(redisUrl);

app.use(express.session({
  secret: settings.sessionSecret,
  store: new RedisStore({host: redis.hostname, port: redis.port, pass: redis.auth ? redis.auth.substring(redis.auth.indexOf(':') + 1): null})
}));
于 2012-11-21T18:33:59.150 回答