当使用带有 Redis To Go 的sailsjs v0.10.3 进行会话存储时,req.session
始终为undefined
.
这是undefined
我在本地和 Heroku 部署的时候。当我使用默认适配器req.session
时正确定义。memory
我创建了一个sailsjs 应用程序:
sails new testapp
sails generate api test testSet testGet
安装了connect-redis v1.4.7:
npm install connect-redis@~1.4.7
设置配置config/session.js
:
adapter: 'redis',
host: 'hoki.redistogo.com',
port: 10015,
db: 'redistogo',
pass: '88819aa089d3dd86235f9fad4cb92e48'
设置配置config/socket.js
:
adapter: 'redis',
host: 'hoki.redistogo.com',
port: 10015,
db: 'redistogo',
pass: '88819aa089d3dd86235f9fad4cb92e48'
创建了一些获取和设置会话值的控制器操作:
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:
git init
git add .
git commit -m "Initial commit"
heroku create
heroku addons:add redistogo
git push heroku master
git
这是错误:
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
。它在本地工作。现在我更加困惑了。