首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sailsjs 0.10.3 - Heroku - RedisToGo - req.session未定义

Sailsjs 0.10.3 - Heroku - RedisToGo - req.session未定义
EN

Stack Overflow用户
提问于 2014-08-12 19:36:19
回答 1查看 532关注 0票数 2

当使用sallsjsv0.10.3与Redis一起进行会话存储时,req.session始终是undefined

当我在本地部署和部署到Heroku时,就是undefined。当我使用默认的req.session适配器时,正确定义了memory

我创建了一个水手应用程序:

代码语言:javascript
复制
sails new testapp
sails generate api test testSet testGet

已安装连接-redis v1.4.7:

代码语言:javascript
复制
npm install connect-redis@~1.4.7

config/session.js中设置配置

代码语言:javascript
复制
adapter: 'redis',
host: 'hoki.redistogo.com',
port: 10015,
db: 'redistogo',
pass: '88819aa089d3dd86235f9fad4cb92e48'

config/socket.js中设置配置

代码语言:javascript
复制
adapter: 'redis',
host: 'hoki.redistogo.com',
port: 10015,
db: 'redistogo',
pass: '88819aa089d3dd86235f9fad4cb92e48'

创建了一些获取和设置会话值的控制器操作:

代码语言:javascript
复制
UserController.js

testSet: function (req, res) {

  req.session.testVar = "I am the test var!";

  return res.ok();
},

testGet: function (req, res) {
  return res.json({
    testVar: req.session.testVar
  });
}

最后部署到Heroku:

代码语言:javascript
复制
git init
git add .
git commit -m "Initial commit"
heroku create
heroku addons:add redistogo
git push heroku master
git 

这是一个错误:

代码语言:javascript
复制
error: Sending 500 ("Server Error") response:  
TypeError: Cannot set property 'testVar' of undefined 
at module.exports.testSet (/app/api/controllers/TestController.js:46:25)

看起来这个简单的例子应该有效。

下面是上面示例的回购:

https://github.com/derekbasch/sailsjs-redistogo-testapp

有人知道我做错了什么吗?

更新:

我尝试使用Heroku上的MemoryStore适配器来获取/设置会话变量。undefined也失败了。它在当地起作用。现在我更困惑了。

EN

回答 1

Stack Overflow用户

发布于 2015-02-12 04:06:21

我们使用rediscloud (heroku上的sails应用程序),db属性设置为0。这可能是问题所在吗?

另外,您应该通过env变量解析heroku提供的URL。这就是我们使用的(coffeescript):

代码语言:javascript
复制
parseRedisUrl = ( url ) ->
  parsed = require( 'url' ).parse( url )
  password = (parsed.auth || '').split( ':' )[1]

  hostname: parsed.hostname
  port: parsed.port
  password: password

redis = parseRedisUrl( process.env.REDISCLOUD_URL || "redis://localhost:6379" )

module.exports.session =

  secret: '...'

  adapter: 'redis'
  host: redis.hostname
  port: redis.port
  pass: redis.password
  db: 0
  ttl: 60 * 60 * 24
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25272676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档