我想从nodejs获取Redis会话的数据 - 但是我无法获得对象的内部值....
这是一个简单的路由器
router.get('/page-user', function (req, res) {
console.log(redis_model.prototype.getAll());
})
这是模型
redis_model.prototype.getAll = function () {
client.keys('*', function (err, keys) {
if (err) return console.log(err);
for(var i = 0, len = keys.length; i < len; i++) {
console.log(keys[i]);
}
});
};
所以我得到了
users
id:users
session:php:cf5myWFkDNEPwiRLpi6M1P6LqX1UPFtj //object
user:{58}
我正在尝试从会话密钥中获取数据,而我正在获取Undefined,如下所示:
redis_model.prototype.getAll = function () {
client.keys('*', function (err, keys) {
if (err) return console.log(err);
console.log(keys['session']); // tried also keys.session
});
};
我无法弄清楚的部分是为什么我为所有键获得Type String - 就像这里:
redis_model.prototype.getAll = function () {
client.keys('*', function (err, keys) {
if (err) return console.log(err);
console.log(typeof keys[i]); result : //string,string, string,string
});
};
我已经尝试过HGETALL来获取键作为对象,但我仍然未定义:
redis_model.prototype.getAll = function () {
client.hgetall("session",function(data){console.log(data)});
};
以下是redis db的截图...
答案 0 :(得分:0)
Client.keys("*",function(err,keys){})
这只返回redisDB中存在的所有键,基本上都是字符串
相反,您可以使用
client.get(&#39;键&#39;,功能(ERR,数据){})
为了将结果作为对象获取,它应该存储为散列,即
client.hmset("session",{'php':'cf5myWFkDNEPwiRLpi6M1P6LqX1UPFtj'}
client.hgetall("session",function(data){console.log(data.php)})
上面的代码为您提供了分配给php的值。
答案 1 :(得分:0)
得到它......
redis_model.prototype.getAll = function () {
client.get('session:php:VfAPTh_NLpBrcq3VGHTC8uT7c-sF4bQd', function(err,
result){
var foo = (JSON.parse(result))['user'];
console.log( foo);
});
};